Greasy Fork

Greasy Fork is available in English.

斗鱼自动发弹幕、领取观看鱼丸、清爽模式

默认弹幕(够长、够骚、够引人注目,你就是弹幕 Gai 最靓的仔)、抄袭弹幕(每次抄袭都是未知的体验,谁知道抄过来的是好是坏)、循环弹幕(DIY 彰显个性)、关键词回复弹幕(设定关键词和回复,帮你自动聊天)、抽奖弹幕(限定发送次数;自动检测新一轮抽奖;检测是否拥有粉丝牌;虽然中不了,但也要试试)、动态弹幕发送时间(想检测我?门都没有) ________ 清爽模式,隐藏部分、宽屏模式、全部隐藏(针对大屏优化,大屏看直播更爽!屏蔽贵族弹幕) ________ 自动签到和领取每天观看鱼丸(我的鱼丸怎么就默默变多了呢) ________ 设置界面可以设定以上功能默认开启(彻底解放你的双手)

当前为 2019-08-26 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name			斗鱼自动发弹幕、领取观看鱼丸、清爽模式
// @namespace		http://tampermonkey.net/
// @version			0.8.7
// @icon			http://www.douyutv.com/favicon.ico
// @description		默认弹幕(够长、够骚、够引人注目,你就是弹幕 Gai 最靓的仔)、抄袭弹幕(每次抄袭都是未知的体验,谁知道抄过来的是好是坏)、循环弹幕(DIY 彰显个性)、关键词回复弹幕(设定关键词和回复,帮你自动聊天)、抽奖弹幕(限定发送次数;自动检测新一轮抽奖;检测是否拥有粉丝牌;虽然中不了,但也要试试)、动态弹幕发送时间(想检测我?门都没有) ________ 清爽模式,隐藏部分、宽屏模式、全部隐藏(针对大屏优化,大屏看直播更爽!屏蔽贵族弹幕) ________ 自动签到和领取每天观看鱼丸(我的鱼丸怎么就默默变多了呢) ________ 设置界面可以设定以上功能默认开启(彻底解放你的双手)
// @author			H2P
// @require			https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// @match			*://*.douyu.com/0*
// @match			*://*.douyu.com/1*
// @match			*://*.douyu.com/2*
// @match			*://*.douyu.com/3*
// @match			*://*.douyu.com/4*
// @match			*://*.douyu.com/5*
// @match			*://*.douyu.com/6*
// @match			*://*.douyu.com/7*
// @match			*://*.douyu.com/8*
// @match			*://*.douyu.com/9*
// @match			*://*.douyu.com/topic/*
// @note			2019.03.18-V0.2.0 循环弹幕可以设置多条,随机发送;新增弹幕倒计时;界面美化一下?抽奖弹幕新增一种查询类型
// @note			2019.03.18-V0.3.0 界面修改;界面可隐藏;可以设置是否发送默认弹幕
// @note			2019.03.18-V0.3.1 小 BUG 修复
// @note			2019.03.19-V0.4.0 引入 JQuery 改写,还没改完;更新了弹幕抽奖元素获取(因为斗鱼改了);增加设置抽奖弹幕次数;发送弹幕时可以修改循环弹幕
// @note			2019.03.23-V0.4.1 完善了一下代码;完善了界面;修改了字体
// @note			2019.03.23-V0.5.0 添加了斗鱼清爽模式:隐藏部分、隐藏全部、删除元素
// @note			2019.03.23-V0.5.1 修缮清爽模式;添加自动领取观看鱼丸(不是鱼秀宝箱)
// @note			2019.03.24-V0.5.2 修缮自动领取观看鱼丸;修缮隐藏全部元素的返回按钮
// @note			2019.03.24-V0.5.3 修改介绍。。。
// @note			2019.03.26-V0.5.4 修缮自动领取观看鱼丸,如果无法领取则清除循环
// @note			2019.03.28-V0.5.5 解决 jQuery $ 冲突;清爽模式处理粉丝节
// @note			2019.03.31-V0.6.0 添加“功能自动化”设置面板
// @note			2019.03.31-V0.6.1 修改介绍
// @note			2019.04.02-V0.6.2 代码重写
// @note			2019.04.04-V0.6.3 添加抄袭弹幕;完善设置信息存储
// @note			2019.05.25-V0.6.4 完善清爽模式退出
// @note			2019.06.11-V0.6.5 更新斗鱼领取宝箱
// @note			2019.07.04-V0.7.0 聚合脚本图标;删去抽奖弹幕
// @note			2019.07.05-V0.7.1 添加抽奖弹幕;发送时间设定改为间隔时间,单位改为毫秒;修改循环弹幕会自动保存
// @note			2019.07.06-V0.7.2 小小修缮
// @note			2019.07.06-V0.7.3 发送弹幕时间在间隔内随机
// @note			2019.07.06-V0.7.4 更新介绍(我觉得我输在介绍不够长、不够骚)
// @note			2019.07.06-V0.7.5 自动领鱼丸更新;抽奖弹幕更新(感谢 beacoolguy 的反馈)
// @note			2019.07.06-V0.7.6 自动点击抽奖弹幕“一键参与”(仅限发弹幕抽奖);清爽模式屏蔽贵族弹幕
// @note			2019.07.09-V0.7.7 抽奖弹幕“一键参与”(仅限条件:发弹幕和关注主播);样式修改;新功能(关键词自动回复展望)
// @note			2019.07.09-V0.7.8 清爽模式针对“topic”直播间和大屏幕优化
// @note			2019.07.11-V0.7.9 添加关键词回复(目前只能设置关键词和回复,无法使用)
// @note			2019.07.14-V0.8.0 关键词回复可以使用啦!!!(最多五条关键词)
// @note			2019.07.22-V0.8.1 修复关键词回复
// @note			2019.08.02-V0.8.2 弹幕抽奖增加拥有粉丝牌的抽奖条件
// @note			2019.08.12-V0.8.3 弹幕抽奖完善拥有粉丝牌的抽奖条件;部分清爽模式修改
// @note			2019.08.13-V0.8.4 清爽模式部分隐藏修缮
// @note			2019.08.16-V0.8.5 清爽模式修缮
// @note			2019.08.17-V0.8.6 清爽模式部分隐藏修缮
// @note			2019.08.26-V0.8.7 清爽模式添加宽屏模式;ESC 快捷退出清爽模式
// @grant			none
// ==/UserScript==

(function(){
	'use strict';

	// 解决 jQuery $ 符号冲突
	var $h2p_j = jQuery.noConflict();

	var interval_autoSendBarrage = undefined;		// 自动发弹幕
	var interval_countDownOfBarrage = undefined;	// 弹幕倒计时

	var bool_barrageReady = false;			// 自动弹幕模块是否装载完毕
	var bool_clearReady = false;			// 自动清理模块是否装载完毕
	var bool_settingReady = false;			// 斗鱼设置模块是否装载完毕

	var interval = 0;					// 弹幕发送间隔时间
	const interval_default = 6000;		// 弹幕发送默认间隔时间
	var luckDrawCountDown = 0;			// 弹幕抽奖活动倒计时
	var barrageCountDown = 0;			// 弹幕倒计时
	var barrageLuckDraw = '';			// 抽奖弹幕内容
	var count_luckDraw = 0;				// 抽奖弹幕实际发送次数
	var count_luckDrawTotal = 0;		// 抽奖弹幕总共发送次数
	const count_luckDrawDefault = 2;	// 抽奖弹幕默认发送次数
	var index_keyReply = 0;				// 关键词回复弹幕列表已经检测的位置

	const color_input_on = 'white';
	const color_input_off = '#DCDCDC';

	const keyReply_maxNum = 5;
	const barrage_maxNum = 120;			// 弹幕列表最多弹幕条数
	const DY_maxWidth = 1200;

	var isAnchorFan	= false;			// 是否拥有主播的粉丝牌

	// 创建元素样式
	var h2p_DYScript_style_barrage = document.createElement('style');
	h2p_DYScript_style_barrage.type = 'text/css';
	h2p_DYScript_style_barrage.innerHTML = (function(){/*
		.h2p-div-panel {
			position 		: absolute;
			bottom 			: 1px;
			min-width 		: 335px;
			max-width 		: 335px;
			border 			: none;
			border-radius	: 2px;
			margin 			: 0 0 0 -1px;
			box-shadow		: #c7c7c7 0 -10px 10px 0;
			display			: none;
			z-index 		: 999;
		}
		.h2p-div-inlinepanel {
			min-width 		: 315px;
			max-width 		: 315px;
			padding 		: 10px;
			border-width	: 0 0 1px 0;
			border-radius	: 2px;
			font-family		: WeibeiSC-Bold, STKaiti;
			font-size		: 16px;
			background		: #f5f5f5;
		}
		.h2p-div-inlinetab {
			min-width 		: 335px;
			max-width 		: 335px;
			border-top		: 1px solid #DCDCDC;
			border-radius	: 2px;
			font-family		: WeibeiSC-Bold, STKaiti;
			font-size		: 16px;
			background		: #f5f5f5;
		}
		.h2p-div-layer {
			position	: relative;
			width		: 100%;
			height		: 24px;
		}
		.h2p-div-layer-half {
			position	: absolute;
			width		: 50%;
			height		: 24px;
		}
		.h2p-checkbox-left {
			position	: absolute;
			top			: 0;
			bottom		: 0;
			left		: 0;
			margin		: auto;
		}
		.h2p-input-normal {
			position		: relative;
			height			: 22px;
			padding			: 0px 5px;
			border			: 1px solid #708090;
			border-radius	: 5px;
			font-size		: 13px;
		}
		.h2p-textarea-loopBarrage {
			width			: 287px;
			height			: 90px;
			padding			: 3px;
			border			: 1px solid #708090;
			border-radius	: 5px;
			margin			: 0 0 0 20px;
			font-size		: 13px;
			resize			: none;
		}
		.h2p-btn-sendBarrage {
			width			: 100%;
			height			: 100%;
			padding			: 4px 0;
			border			: none;
			border-radius	: 5px;
			margin			: 0;
			font-size		: 13px;
			background		: #00ddbb;
			cursor			: pointer;
		}
		.h2p-div-sign {
			width			: 18px;
			height			: 18px;
			display			: inline-block;
			vertical-align 	: middle;
		}
		.h2p-div-tab {
			width			: 33.3%;
			max-height		: 29px;
			padding			: 2px 0;
			text-align		: center;
			display			: inline-block;
		}
		.h2p-div-tab:hover {
			cursor			: pointer;
			background		: #DDDDDD;
		}
		.h2p-span-sign {
			font-size		: 18px;
			cursor			: pointer;
		}
		.h2p-label-checkbox-left { margin : 0 0 0 20px }
		.h2p-color-font-green { color : #228B22 }
		.h2p-color-background-on { background : white }
		.h2p-color-background-off { background : #DCDCDC }
	*/}).toString().split('/*')[1].split('*/')[0];
	document.head.appendChild(h2p_DYScript_style_barrage);


	// 整个面板 ===============================================================
	var div_DYScript = $h2p_j('<div id="div-DYScript" class="h2p-div-panel"></div>');

	// 面板底部功能键
	var div_DYScriptTab = function(){
		var greyAllTabs = () => {
			$h2p_j('div#div-sendBarrage').hide();
			$h2p_j('div#div-tab-sendBarrage').css('background', '#f5f5f5');
			$h2p_j('div#div-DYLight').hide();
			$h2p_j('div#div-tab-DYLight').css('background', '#f5f5f5');
			$h2p_j('div#div-setting').hide();
			$h2p_j('div#div-tab-setting').css('background', '#f5f5f5');
		}

		let div_DYScriptTab = $h2p_j('<div id="div-DYScriptTab" class="h2p-div-inlinetab"></div>');

		// 发弹幕
		let div_tab_barrage = $h2p_j('<div id="div-tab-sendBarrage" class="h2p-div-tab" style="background: #DDDDDD;" title="发弹幕">📢</div>');
		$h2p_j(div_tab_barrage).click(function(){
			greyAllTabs();
			$h2p_j('div#div-sendBarrage').show();
			$h2p_j('div#div-tab-sendBarrage').css('background', '#DDDDDD');
		});

		// 清爽模式
		let div_tab_light = $h2p_j('<div id="div-tab-DYLight" class="h2p-div-tab" style="width: 33.4%" title="清爽模式">✡️</div>');
		$h2p_j(div_tab_light).click(function(){
			greyAllTabs();
			$h2p_j('div#div-DYLight').show();
			$h2p_j('div#div-tab-DYLight').css('background', '#DDDDDD');
		});

		// 自动化设置
		let div_tab_setting = $h2p_j('<div id="div-tab-setting" class="h2p-div-tab" title="自动化设置">⏲️</div>');
		$h2p_j(div_tab_setting).click(function(){
			greyAllTabs();
			$h2p_j('div#div-setting').show();
			$h2p_j('div#div-tab-setting').css('background', '#DDDDDD');
		});

		$h2p_j(div_DYScriptTab).append( div_tab_barrage );
		$h2p_j(div_DYScriptTab).append( div_tab_light );
		$h2p_j(div_DYScriptTab).append( div_tab_setting );

		return div_DYScriptTab;
	};






// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
// 发弹幕
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //






	// 初始化自动发弹幕界面  ===============================================================
	var initView_barrage = function(){
		// 发送弹幕面板 ===============================================================
		var div_barrage = $h2p_j('<div id="div-sendBarrage" class="h2p-div-inlinepanel"></div>');


		// 发送弹幕的速度 And 倒计时 ===============================================================
		var str_div_speed_countDown = (function(){/*
			<div class="h2p-div-layer">
				<label>间隔:</label>
				<input id="input-sendBarrage-speedMin" class="h2p-input-normal" style="width: 44px;" placeholder=">2000" />
				<text>~</text>
				<input id="input-sendBarrage-speedMax" class="h2p-input-normal" style="width: 44px;" placeholder=">2000" />
				<label>毫秒</label>
				<input id="input-countDown" class="h2p-input-normal h2p-color-background-off" style="position: absolute; right: 0; width: 32px;" disabled/>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_speed_countDown = $h2p_j(str_div_speed_countDown);

		// 是否发送默认弹幕  ===============================================================
		var str_div_defaultAndCopyBarrage = (function(){/*
			<div class="h2p-div-layer" style="height: 22px;">
				<div class="h2p-div-layer-half">
					<input id="input-barrage-isDefault" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">发送默认弹幕</label>
				</div>
				<div class="h2p-div-layer-half" style="left: 50%">
					<input id="input-barrage-isCopy" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">发送抄袭弹幕</label>
				</div>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_defaultAndCopyBarrage = $h2p_j(str_div_defaultAndCopyBarrage);

		// 是否发送循环弹幕  ===============================================================
		var str_div_loopBarrage = (function(){/*
			<div class="h2p-div-layer" style="height: 98px;">
				<input id="input-barrage-isLoop" class="h2p-checkbox-left" type="checkbox" value="" />
				<textarea id="input-loopBarrage-content" class="h2p-textarea-loopBarrage" placeholder="循环弹幕"></textarea>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_loopBarrage = $h2p_j(str_div_loopBarrage);

		// 是否使用关键词自动回复  ===============================================================
		var str_div_keyReply = (function(){/*
			<div class="h2p-div-layer">
				<div class="h2p-div-layer-half">
					<input id="input-barrage-isKeyReply" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">关键词回复</label>
				</div>
				<div class="h2p-div-layer-half" style="left: 50%">
					<select id="select-keyReply" style="width: 100%; height: 24px;">
						<option value="">待定</option>
						<option value="">待定</option>
						<option value="">待定</option>
						<option value="">待定</option>
						<option value="">待定</option>
					</select>
				</div>
			</div>
			<hr style="margin: 3px; border: 1px solid transparent;">
			<div class="h2p-div-layer">
				<div class="h2p-div-layer-half">
					<input class="h2p-checkbox-left" style="visibility: hidden;" type="checkbox" value="" />
					<input id="input-keyReply-key" class="h2p-input-normal" style="left: 20px; width: 70%;" placeholder="关键词">
				</div>
				<div class="h2p-div-layer-half" style="left: 50%">
					<input id="input-keyReply-reply" class="h2p-input-normal" style="width: 90%; padding: 0 4.2%;" placeholder="自动回复弹幕">
				</div>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_keyReply = $h2p_j(str_div_keyReply);

		// 是否参加弹幕抽奖  ===============================================================
		var str_div_luckDrawBarrage = (function(){/*
			<div class="h2p-div-layer">
				<div class="h2p-div-layer-half">
					<input id="input-barrage-isLuckDraw" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">发送抽奖弹幕</label>
				</div>
				<div class="h2p-div-layer-half" style="left: 50%">
					<label class="h2p-color-font-green">抽奖发送:</label>
					<input id="input-luckDrawCount" class="h2p-input-normal" style="position: absolute; width: 65px;" placeholder="默认 2 次" />
				</div>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_luckDrawBarrage = $h2p_j(str_div_luckDrawBarrage);


		// 弹幕发送按钮  ===============================================================
		var div_barrageSendBtn = $h2p_j('<div class="h2p-div-layer"></div>');

		var btn_sendBarrage = document.createElement('button');
		$h2p_j(btn_sendBarrage).attr('id', 'btn-sendBarrage');
		$h2p_j(btn_sendBarrage).attr('class', 'h2p-btn-sendBarrage');
		$h2p_j(btn_sendBarrage).text('发送');
		btn_sendBarrage.onclick = function(){
			clearInterval_barrageCountDown();
	        if ( interval_autoSendBarrage == undefined ) {
	            setInterval_autoSendBarrage();
				setInterval_barrageCountDown();
		    }
		    else {
	            clearInterval_autoSendBarrage();
		    }
		}
		btn_sendBarrage.onmouseover = function(){
			this.style.background = '#00d1b2';
		}
		btn_sendBarrage.onmouseout = function(){
			this.style.background = '#00ddbb';
		}
		$h2p_j(div_barrageSendBtn).append(btn_sendBarrage);


		// 分隔线  ===============================================================
		let hr_style = '<hr style="margin: 3px; border: 1px solid transparent;">';


		// 添加所有元素  ===============================================================
		$h2p_j(div_barrage).append(div_speed_countDown);
		$h2p_j(div_barrage).append($h2p_j(hr_style));
		$h2p_j(div_barrage).append(div_defaultAndCopyBarrage);
		$h2p_j(div_barrage).append($h2p_j(hr_style));
		$h2p_j(div_barrage).append(div_loopBarrage);
		$h2p_j(div_barrage).append($h2p_j(hr_style));
		$h2p_j(div_barrage).append(div_keyReply);
		$h2p_j(div_barrage).append($h2p_j(hr_style));
		$h2p_j(div_barrage).append(div_luckDrawBarrage);
		$h2p_j(div_barrage).append($h2p_j(hr_style));
		$h2p_j(div_barrage).append(div_barrageSendBtn);

		$h2p_j(div_DYScript).append(div_barrage);


		// 检查弹幕面板挂载点(斗鱼弹幕显示区域)是否加载完成
		var check_mountPoint_barragePanel = setInterval( function(){
			if ( document.getElementsByClassName('layout-Player-asideMainTop').length > 0 ) {
				setTimeout( function(){
					$h2p_j( $h2p_j('div.layout-Player-asideMainTop')[0] ).append( div_DYScript );
				}, 3000);
				window.clearInterval( check_mountPoint_barragePanel );
			}
		}, 1000);

		// 检查弹幕图标挂载点(斗鱼弹幕输入框)是否加载完成
		var check_mountPoint_barrageIcon = setInterval( function(){
			if ( document.getElementById('div-sendBarrage') && document.getElementsByClassName('ChatToolBar')[0] ) {
				window.clearInterval( check_mountPoint_barrageIcon );

				bool_barrageReady = true;

				// 发送弹幕最小速度输入框事件
				let input_sendBarrage_speedMin = document.getElementById('input-sendBarrage-speedMin');
				input_sendBarrage_speedMin.onblur = input_sendBarrage_speedMin.onkeyup = function(){
					var value = this.value;
					value = value.replace(/[^\d]/g,'');
					while( value.length > 0 && value[0] == '0' ) {
						value = value.substr(1, value.length);
					}
					if ( value.length > 6 ) {
						value = value.substr(0, 6);
					}
					this.value = value;
				}

				// 发送弹幕最大速度输入框事件
				let input_sendBarrage_speedMax = document.getElementById('input-sendBarrage-speedMax');
				input_sendBarrage_speedMax.onblur = input_sendBarrage_speedMax.onkeyup = function(){
					var value = this.value;
					value = value.replace(/[^\d]/g,'');
					while( value.length > 0 && value[0] == '0' ) {
						value = value.substr(1, value.length);
					}
					if ( value.length > 6 ) {
						value = value.substr(0, 6);
					}
					this.value = value;
				}

				// 自动保存循环弹幕
				let input_loopBarrage_content = document.getElementById('input-loopBarrage-content');
				input_loopBarrage_content.onchange = function(){
					h2p_DYScript_setting.loopBarrageConTemp = document.getElementById('input-loopBarrage-content').value;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				}
				input_loopBarrage_content.onblur = function(){
					if ( h2p_DYScript_setting.loopBarrageConTemp.length > 0 ) {
						h2p_DYScript_setting.loopBarrageContext = h2p_DYScript_setting.loopBarrageConTemp;
						h2p_DYScript_setting.loopBarrageConTemp = '';
						localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
					}
				}

				// 发送抽奖弹幕次数输入框事件
				let input_luckDrawBarrageCount = document.getElementById('input-luckDrawCount');
				input_luckDrawBarrageCount.onblur = input_luckDrawBarrageCount.onkeyup = function(){
					var value = this.value;
					value = value.replace(/[^\d]/g,'');
					while( value.length > 0 && value[0] == '0' ) {
						value = value.substr(1, value.length);
					}
					if ( value.length > 2 ) {
						value = value.substr(0, 2);
					}
					this.value = value;
				}

				// 关键词自动回复 option click 监听
				let keyReplys = document.getElementById('select-keyReply');
				keyReplys.onchange = function(){
					let option = $h2p_j('select#select-keyReply option:selected');
					$h2p_j('input#input-keyReply-key').val( option.text() );
					$h2p_j('input#input-keyReply-reply').val( option.val() );
				}

				// 关键词和关键词回复输入框事件
				let input_keyReply_key = document.getElementById('input-keyReply-key');
				let input_keyReply_reply = document.getElementById('input-keyReply-reply');
				input_keyReply_key.onblur = input_keyReply_reply.onblur = function(){
					let option = $h2p_j('select#select-keyReply option:selected');
					option.text(input_keyReply_key.value);
					option.val(input_keyReply_reply.value);
					let index = document.getElementById('select-keyReply').selectedIndex;
					h2p_DYScript_setting.keyReplys[index].text = input_keyReply_key.value;
					h2p_DYScript_setting.keyReplys[index].value = input_keyReply_reply.value
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				}
			}
		}, 1000);
	}

	function isStrNone(str){
		return str == undefined || str.length == 0;
	}

	function sendBarrage(){
		var barrage = '';
		var isLuckDrawBarrage = false;

		// 优先抽奖弹幕
		if ( document.getElementById('input-barrage-isLuckDraw') && document.getElementById('input-barrage-isLuckDraw').checked){
			var temp1 = document.getElementsByClassName('UPlayerLotteryEnter-deadsec')[0];
			if ( temp1 ) {
				// 计算目前倒计时
				var minute = parseInt( temp1.textContent.split(':')[0] );
				var second = parseInt( temp1.textContent.split(':')[1] );
				var nowLuckDrawCountDown = minute * 60 + second;

				// 判断是否是新一轮抽奖
				if ( nowLuckDrawCountDown > luckDrawCountDown ) {
					// 新一轮抽奖弹幕
					count_luckDraw = 0;
					// 显示抽奖内容
					temp1.click();

					try{
						// 获取抽奖弹幕条件
						let barrageRequirement = document.getElementsByClassName('ULotteryStart-rule')[0].children[0].textContent.split(':')[1];
						const requirements = ['发弹幕', '发弹幕+关注主播'];
						if ( barrageRequirement.indexOf('赠送礼物') < 0 && ( requirements.indexOf( barrageRequirement ) > -1 || ( isAnchorFan && barrageRequirement.indexOf('成为粉丝') > -1 ) ) && document.getElementsByClassName('ULotteryStart-joinBtnText').length > 0 ) {
							document.getElementsByClassName('ULotteryStart-joinBtnText')[0].click();
						}

						// 获取抽奖弹幕内容
						barrageLuckDraw = document.getElementsByClassName('ULotteryStart-danmuDesc UserLottery-ellipse is-coping')[0].textContent;
						barrageLuckDraw = barrageLuckDraw.split(':')[1] ? barrageLuckDraw.split(':')[1] : barrageLuckDraw.split(':')[0];
					} catch (err) {
						console.log('不是弹幕抽奖');
					} finally {
						$h2p_j('span.LotteryContainer-close').click();
					}
				}

				barrage = count_luckDraw < count_luckDrawTotal ? barrageLuckDraw : '';
				if ( barrage != undefined && barrage.length > 0 ) {
					isLuckDrawBarrage = true;
					count_luckDraw++;
				}
				luckDrawCountDown = nowLuckDrawCountDown;
			}
		}

		// 关键词弹幕回复
		if ( isStrNone( barrage) && document.getElementById('input-barrage-isKeyReply') && document.getElementById('input-barrage-isKeyReply').checked ) {
			let barrages = $h2p_j('ul#js-barrage-list > li');
			if ( barrages.length > barrage_maxNum ) {
				let surplusNum = barrages.length - barrage_maxNum;
				$h2p_j('#js-barrage-list > li:lt(' + surplusNum + ')').remove();
				index_keyReply = index_keyReply > surplusNum ? index_keyReply - surplusNum : 0;
				barrages = $h2p_j('ul#js-barrage-list > li');
			}
			for ( let i = index_keyReply; i < barrages.length; i++ ) {
				index_keyReply++;
				let ele = barrages[i];
				let barrage_check = $h2p_j(ele).find('span[class="Barrage-content"]').text().replace(/\s/g, '');
				let keyReplys = h2p_DYScript_setting.keyReplys;
				let keys = [];
				keyReplys.forEach((ele) => {
					keys[keys.length] = ele.text != undefined && ( ele.text != '&待定&' || ele.text != '待定' ) ? ele.text : '肯定不会是我的,哈哈哈哈😂';
				});
				let index = ((barrage_check) => {
					for ( let j = 0; j < keys.length; j++ ) {
						if ( barrage_check.indexOf(keys[j]) > -1 ) {
							return j;
						}
					}
					return -1;
				})(barrage_check);
				barrage = index > -1 && index < keyReplys.length ? keyReplys[index].value : '';
				if ( !isStrNone(barrage) ) break;
			}
		}

		// 循环发送抄袭弹幕
		if ( isStrNone( barrage) && document.getElementById('input-barrage-isCopy') && document.getElementById('input-barrage-isCopy').checked ) {
			if ( document.getElementsByClassName('Barrage-content').length > 0 ) {
				let barrages = document.getElementsByClassName('Barrage-content');
				barrage = barrages[barrages.length-1].textContent.replace(/\s/g, '');
			}
		}

		// 循环发送自定义弹幕
		if ( isStrNone( barrage) && document.getElementById('input-barrage-isLoop') && document.getElementById('input-barrage-isLoop').checked ) {
			var barrageLoop = new Array();
			barrageLoop = document.getElementById('input-loopBarrage-content').value.split('\n');
			let index = Math.round( Math.random()*barrageLoop.length );
			barrage = barrageLoop[index] ? barrageLoop[index] : barrageLoop[0];
		}

		// 代码内置弹幕
		if ( isStrNone( barrage) && document.getElementById('input-barrage-isDefault') && document.getElementById('input-barrage-isDefault').checked ) {
			var praise = [ ',我们一起手牵手走过很多路,我们一起手牵手唱了很多歌,我们也手牵手爱了彼此很久很久。', ',遇见你本身就是一个错误,爱上你便是一错再错,离开你的时候我才明白,这才是错上加错。', '追我追了三条街;谢霆锋昨天看见我后,立即宣布要在9月份退出演艺圈!不为别的,就是因为我长得实在是太帅了!', ',每次你凶我的时候,我都觉得你有病,面对这么帅气的我,你居然还能发脾气。', '一直承受着这个年纪不该有的帅气,好累。', '只恨自己太倔强,明明可以靠脸吃饭,却偏偏要靠才华。', '帅到走在街上开车的人看了都会发生交通事故,汽车追尾;路人看了都有迷倒晕倒~~', '人见人爱,鸟见鸟呆,风靡万千少女,刺激帅哥市场,挽救无数,一支梨花压海棠……', '你是花丛中的蝴蝶,是百合花中的蓓蕾。无论什么衣服穿到你的身上,总是那么端庄好看。', '你也许没有若隐若现的酒窝,但你的微笑一定是月闭花羞,鱼沉雁落。', ',在人流中,我一眼就发现了你。我不敢说你是她们中最漂亮的一个,可是我敢说,你是她们中最出色的一个。','求你不要再打扮了,给其他的女人留点自信吧。', 'skr~skr~skr~', '的美由骨到皮,感天动地,此情可待成追忆', '蹦蹦跳跳地走进来,一件红尼大衣,紧束着腰带,显得那么轻盈,那么矫健,简直就像天边飘来一朵红云。', '一张坏坏的笑脸,连两道浓浓的眉毛也泛起柔柔的涟漪,好像一直都带着笑意,弯弯的,像是夜空里皎洁的上弦月。白皙的皮肤衬托着淡淡桃红色的嘴唇,俊美突出的五官,完美的脸型,特别是左耳闪着炫目光亮的钻石耳钉,给他的阳光帅气中加入了一丝不羁。', '真是个聪明的孩子!', '是花丛中的蝴蝶,是百合花中的蓓蕾。无论什么衣服穿到你的身上,总是那么端庄、好看。', '全身充溢着少女的纯情和青春的风采。留给我印象最深的是你那双湖水般清澈的眸子,以及长长的、一闪一闪的睫毛。像是探询,像是关切,像是问候。', ',只有莲花才能比得上你的圣洁,只有月亮才能比得上你的冰清。', ',我不知道该怎样表达你留在我心中最强最深的印象,是你丰满颀长的身材,白皙的皮肤。乌黑幽深的眼睛,小巧红润的嘴唇,但还有一种说不出,捉不到的丰仪在煽动着我的心。', '表现的很勇敢,是一个真正的男子汉!', '想法很有创意!', '瀑布一般的长发,淡雅的连衣裙,标准的瓜子脸,聪明的杏仁眼,那稳重端庄的气质,再调皮的人见了你都会小心翼翼。', '娉婷婉约的风姿,娇艳俏丽的容貌,妩媚得体的举止,优雅大方的谈吐,一开始就令我刮目相看。', '像一片轻柔的云在我眼前飘来飘去,你清丽秀雅的脸上荡漾着春天般美丽的笑容。', '说话得体,举止大方。不要吝啬赞美!因为你的赞美,对他人是一种鼓励,一种信任。', '思维太活跃了,我根本就跟不上。', '是那样地美,美得象一首抒情诗。', '远近书疏,莫不手答,笔翰如流未尝壅滞。', '双目似有千情万怨,道不尽也诉不完,一句巧笑倩兮,美目盼兮可能描述碧瑶盈盈眼波。', '双眉有如柳叶刀裁,盈盈笑意眉上来,一句云髻峨峨,修眉联娟得以道出碧瑶云云细眉。', '那红嘟嘟地脸蛋闪着光亮,像九月里熟透地苹果一样。', '像那沾满露珠的花瓣,给我带来一室芳香;你像那划过蓝天的鸽哨,给我带来心灵的静远和追求。', '乌灵的眼眸,倏地笼上层嗜血的寒意,仿若魔神降世一般,一双冰眸轻易贯穿人心,刺透心底最柔弱,舞衣的角落。', '眼神优雅、娴静,双眼回盼流波,像是俏丽的江南女子;但又挂着一丝倔犟的波纹,又带着北国女儿的神韵。', '清水出芙蓉,天然去雕饰。', '刹那芳华,犹如指尖流砂。灿烂烟花,终究剪不下。', '不必假装有深度,只要懂得欣赏别人的深度,已经是 一种美德了。', '言谈中可以看出,我今天遇到的都是有修养的人。', '白皙的皮肤衬托着淡淡桃红色的嘴唇,俊美突出的五官,完美的脸型,特别是左耳闪着炫目光亮的钻石耳钉,给他的阳光帅气中加入了一丝不羁。', '真是一位家庭、事业有成的人,非常令人羡慕。', '一席话,胜读十年书,今天与您交谈,我受益匪浅。', '真幽默,话从您口中说出来就是不一样。', '在午后的阳光下,没有丝毫红晕,清秀的脸上只显出了一种病态的苍白,却无时不流露出高贵淡雅的气质,配合他颀长纤细的身材。', '那双圆溜溜的大眼睛,镶了一圈乌黑闪亮的长睫毛,眨动之间,透出一股聪明伶俐劲儿。', '目光深邃,一看您就是一位有思想的人。', '语调独特,言谈话语中充满了感染力。', '别开玩笑了,看您的容貌,肯定不到四十岁。', '立体的五官刀刻般俊美,整个人发出一种威震天下的王者之气,邪恶而俊美的脸上此时噙着一抹放荡不拘的微笑。', '好像是上品的西湖龙井那种淡淡的苦涩是你的成熟越品你越有味道。', '浓密的眉毛叛逆地稍稍向上扬起,长而微卷的睫毛下,有着一双像朝露一样清澈的眼睛,英挺的鼻梁,像玫瑰花瓣一样粉嫩的嘴唇,还有白皙的皮肤。', '可以夸,但没必要。。。', '游戏打的不错', '英俊潇洒', '风流倜傥', '玉树临风', '遇见你之后,再看别的女人,就好象在侮辱自己的眼睛!', '神勇威武', '你笑起来的样子最为动人,两片薄薄的嘴唇在笑,长长的眼睛在笑,腮上两个陷得很举动的酒窝也在笑。', '宇内第一寂寞高手', '满腹经纶!这果然是奥妙!我等佩服!', '天资聪颖,文思敏捷,下笔成章,将来未可限量!', '玉面郎君', '仁者无敌', '那瓜子形的脸,那么白净,弯弯的一双眉毛,那么修长;水汪汪的一对眼睛,那么明亮!', '金刚不坏', '英明神武'];
		    var subject = "主播";
			let index = Math.round( Math.random()*praise.length );
			barrage = subject + praise[index];
		}

		if ( barrage != undefined && barrage.length > 0 ) {
			if ( isLuckDrawBarrage ) {
				$h2p_j('#input-luckDrawCount').val( count_luckDraw + ' / ' + count_luckDrawTotal );
			}
			$h2p_j( $h2p_j('textarea.ChatSend-txt ')[0] ).val(barrage);
			document.getElementsByClassName('ChatSend-button')[0].click();
		}

		if ( interval_countDownOfBarrage == undefined ) {
			setInterval_barrageCountDown();
		}

		// 重新计算发送速度
		let input_speedMin = document.getElementById('input-sendBarrage-speedMin');
		let input_speedMax = document.getElementById('input-sendBarrage-speedMax');
		let intervalMin = parseInt( input_speedMin.value ) >= 2000 ? parseInt( input_speedMin.value ) : interval_default;
		let intervalMax = parseInt( input_speedMax.value ) >= intervalMin ? parseInt( input_speedMax.value ) : intervalMin + 1000;
		let distance = intervalMax - intervalMin;
		interval = Math.floor( Math.random() * distance + intervalMin );
		// 重新显示倒计时
		barrageCountDown = parseInt( interval / 100 ) / 10.0;
		window.clearTimeout(barrageCountDown);
		interval_autoSendBarrage = setTimeout(sendBarrage, interval);
	}

	function setInterval_autoSendBarrage(){
		// 计算发送速度
		let input_speedMin = document.getElementById('input-sendBarrage-speedMin');
		let input_speedMax = document.getElementById('input-sendBarrage-speedMax');
		let intervalMin = parseInt( input_speedMin.value ) >= 2000 ? parseInt( input_speedMin.value ) : interval_default;
		let intervalMax = parseInt( input_speedMax.value ) >= intervalMin ? parseInt( input_speedMax.value ) : intervalMin + 1000;
		let distance = intervalMax - intervalMin;
		interval = Math.floor( Math.random() * distance + intervalMin );

		// 在发送弹幕时,速度不可改变
		$h2p_j(input_speedMin).attr('disabled', true);
		$h2p_j(input_speedMin).css({
			'background'	: color_input_off,
			'cursor'		: 'default',
		});
		$h2p_j(input_speedMax).attr('disabled', true);
		$h2p_j(input_speedMax).css({
			'background'	: color_input_off,
			'cursor'		: 'default',
		});

		$h2p_j('button#btn-sendBarrage').text('停止发送');

		var input_luckDrawBarrageCount = document.getElementById('input-luckDrawCount');
		$h2p_j(input_luckDrawBarrageCount).attr('disabled', true);
		$h2p_j(input_luckDrawBarrageCount).css({
			'background'	: color_input_off,
			'cursor'		: 'default',
		});
		count_luckDraw = 0;
		count_luckDrawTotal = parseInt( $h2p_j('#input-luckDrawCount').val() );
		count_luckDrawTotal = count_luckDrawTotal ? count_luckDrawTotal : count_luckDrawDefault;

		$h2p_j('#div-tab-sendBarrage').text('🔥');

		interval_autoSendBarrage = setTimeout(sendBarrage, interval);
	}

	// 停止发送弹幕
	function clearInterval_autoSendBarrage(){
		window.clearTimeout(interval_autoSendBarrage);
		interval_autoSendBarrage = undefined;

		// 可以修改发送速度
		let input_speedMin = document.getElementById('input-sendBarrage-speedMin');
		let input_speedMax = document.getElementById('input-sendBarrage-speedMax');
		$h2p_j(input_speedMin).attr('disabled', false);
		$h2p_j(input_speedMin).css({
			'background'	: color_input_on,
			'cursor'		: 'text',
		});
		$h2p_j(input_speedMax).attr('disabled', false);
		$h2p_j(input_speedMax).css({
			'background'	: color_input_on,
			'cursor'		: 'text',
		});

		$h2p_j('button#btn-sendBarrage').text('发送');

		var input_luckDrawBarrageCount = document.getElementById('input-luckDrawCount');
		$h2p_j(input_luckDrawBarrageCount).attr('disabled', false);
		$h2p_j(input_luckDrawBarrageCount).css({
			'background'	: color_input_on,
			'cursor'		: 'text',
		});

		$h2p_j('#input-luckDrawCount').val(count_luckDrawTotal);

		$h2p_j('#div-tab-sendBarrage').text('📢');
	}

	function showBarrageCountDown(){
		if ( barrageCountDown <= 0 ) {
			barrageCountDown = parseInt( interval / 100 ) / 10;
		}
		barrageCountDown = ( barrageCountDown * 10 - 1 ) / 10;
		$h2p_j('#input-countDown').val(barrageCountDown);
	}

	function setInterval_barrageCountDown(){
		if ( barrageCountDown <= 0 ) {
			barrageCountDown = parseInt( interval / 100 ) / 10;
		}
		interval_countDownOfBarrage = setInterval(showBarrageCountDown, 100);
	}

	function clearInterval_barrageCountDown(){
		window.clearInterval(interval_countDownOfBarrage);
		interval_countDownOfBarrage = undefined;
		$h2p_j('#input-countDown').val('');
	}

	// 调用初始化自动发弹幕函数
	initView_barrage();






// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
// 清爽模式
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //






	// 创建元素样式
	var h2p_DYScript_style_clear = document.createElement('style');
	h2p_DYScript_style_clear.type = 'text/css';
	h2p_DYScript_style_clear.innerHTML = (function(){/*
		.h2p-btn-hideAll-back {
			position 		: fixed;
			right			: 0;
			bottom			: 0;
			width			: 55px;
			height			: 55px;
			padding			: 10px;
			border			: none;
			font-size		: 13px;
			background		: transparent;
			cursor			: pointer;
			display			: none;
		}
		.h2p-btn {
			width			: 100%;
			height			: 100%;
			padding			: 4px 0;
			border			: none;
			border-radius	: 5px;
			margin			: 0;
			font-size		: 13px;
			background		: #00ddbb;
			cursor			: pointer;
		}
		.h2p-clearWidthLimit {
			width			: 100%!important;
			max-width		: 100%!important;
			height			: 100%;
			margin			: auto 0px!important;
		}
	*/}).toString().split('/*')[1].split('*/')[0];
	document.head.appendChild(h2p_DYScript_style_clear);
	var bool_hide_part = false;
	var bool_hide_all = false;
	// wide screen
	var bool_hide_ws = false;

	// 清除贵族弹幕
	var interval_clearNobleBarrage;

	var initView_clearUp = function(){

		// 清爽界面面板 ===============================================================
		var div_DYLight = $h2p_j('<div id="div-DYLight" class="h2p-div-inlinepanel" style="display: none"></div>');

		var btn_hide_part = document.createElement('button');
		$h2p_j(btn_hide_part).attr('id', 'btn-hide-part');
		$h2p_j(btn_hide_part).attr('class', 'h2p-btn');
		$h2p_j(btn_hide_part).text('隐藏部分元素');
		btn_hide_part.onclick = function(){
			douyu_hide_part();
		}
		btn_hide_part.onmouseover = function(){
			this.style.background = '#00d1b2';
		}
		btn_hide_part.onmouseout = function(){
			this.style.background = '#00ddbb';
		}

		var btn_hide_all = document.createElement('button');
		$h2p_j(btn_hide_all).attr('id', 'btn-hide-all');
		$h2p_j(btn_hide_all).attr('class', 'h2p-btn');
		$h2p_j(btn_hide_all).text('隐藏全部元素');
		btn_hide_all.onclick = function(){
			douyu_hide_all();
		}
		btn_hide_all.onmouseover = function(){
			this.style.background = '#00d1b2';
		}
		btn_hide_all.onmouseout = function(){
			this.style.background = '#00ddbb';
		}

		var btn_hide_ws = document.createElement('button');
		$h2p_j(btn_hide_ws).attr('id', 'btn-hide-ws');
		$h2p_j(btn_hide_ws).attr('class', 'h2p-btn');
		$h2p_j(btn_hide_ws).text('宽屏模式');
		btn_hide_ws.onclick = function(){
			douyu_hide_ws();
		}
		btn_hide_ws.onmouseover = function(){
			this.style.background = '#00d1b2';
		}
		btn_hide_ws.onmouseout = function(){
			this.style.background = '#00ddbb';
		}


		// 分隔线  ===============================================================
		let hr_style = '<hr style="margin: 6px; border: 1px solid transparent;">';


		// 添加所有清爽按钮
		$h2p_j(div_DYLight).append($h2p_j(hr_style));
		$h2p_j(div_DYLight).append(btn_hide_part);
		$h2p_j(div_DYLight).append($h2p_j(hr_style));
		$h2p_j(div_DYLight).append($h2p_j(hr_style));
		$h2p_j(div_DYLight).append(btn_hide_all);
		$h2p_j(div_DYLight).append($h2p_j(hr_style));
		$h2p_j(div_DYLight).append($h2p_j(hr_style));
		$h2p_j(div_DYLight).append(btn_hide_ws);
		$h2p_j(div_DYLight).append($h2p_j(hr_style));

		$h2p_j(div_DYScript).append(div_DYLight);

		var check_mountPoint_clearIcon = setInterval( function(){
			if ( document.getElementById('div-DYScript') && document.getElementsByClassName('ChatToolBar')[0] ) {
				window.clearInterval( check_mountPoint_clearIcon );
				bool_clearReady = true;
			}
		}, 1000);
	}

	var hideEnable= () => {
		$h2p_j('#btn-hide-part').attr('disabled', false);
		$h2p_j('#btn-hide-all').attr('disabled', false);
		$h2p_j('#btn-hide-ws').attr('disabled', false);

		$h2p_j('#btn-hide-part').css('cursor', 'pointer');
		$h2p_j('#btn-hide-all').css('cursor', 'pointer');
		$h2p_j('#btn-hide-ws').css('cursor', 'pointer');
	}
	var hideDisable = () => {
		$h2p_j('#btn-hide-part').attr('disabled', true);
		$h2p_j('#btn-hide-all').attr('disabled', true);
		$h2p_j('#btn-hide-ws').attr('disabled', true);

		$h2p_j('#btn-hide-part').css('cursor', 'default');
		$h2p_j('#btn-hide-all').css('cursor', 'default');
		$h2p_j('#btn-hide-ws').css('cursor', 'default');
	}

	var funcDisable = () => {
		// 禁用网页全屏
		$h2p_j('div.wfs-exit-180268').css('visibility','hidden');
		// 禁用窗口全屏
		$h2p_j('div.fs-781153').css('visibility','hidden');
		// 禁用消除弹幕框
		$h2p_j('label.layout-Player-asidetoggleButton').css('visibility','hidden');
	}
	var funcEnable = () => {
		// 启用网页全屏
		$h2p_j('div.wfs-exit-180268').css('visibility','visible');
		// 启用窗口全屏
		$h2p_j('div.fs-781153').css('visibility','visible');
		// 启用消除弹幕框
		$h2p_j('label.layout-Player-asidetoggleButton').css('visibility','visible');
	}

	$h2p_j(document).ready().keydown(function (e) {
		// ESC 按键
		if ( e.which === 27 ) {
			if ( bool_hide_part ) douyu_hide_part();
			else if ( bool_hide_all ) douyu_hide_all();
			else if ( bool_hide_ws ) douyu_hide_ws();
		}
	});

	// 隐藏部分元素
	var douyu_hide_part = function(){
		if ( bool_hide_all || bool_hide_ws ) {
			return;
		}

		// 背景图片
		$h2p_j('#js-background-holder').toggle();
		// 左侧边栏
		$h2p_j('#js-aside').toggle();
		// 竞猜
		$h2p_j('div#js-player-guessgame').toggle();
		// 友邻、竞猜
		$h2p_j('div#js-bottom').toggle();
		// 贵宾弹幕
		$h2p_j('div.Barrage-topFloater').toggle();
		// 清除弹幕
		if ( document.getElementsByClassName('showdanmu-42b0ac').length > 0 ) {
			document.getElementsByClassName('showdanmu-42b0ac')[0].click();
		}
		// 吃鸡战绩
		$h2p_j('div.PubgInfo').toggle();

		// 超级粉丝团
		if ( $h2p_j('div#js-room-activity').length > 0 ) {
			$h2p_j('div#js-room-activity').remove();
		}

		$h2p_j('div#root').children('div.bc-wrapper:gt(1)').toggle();

		// 清除贵族弹幕
		interval_clearNobleBarrage = setInterval( () => {
			let nobleBarrages = document.getElementsByClassName('js-noblefloating-barragecont Barrage-notice--noble');
			let len = nobleBarrages.length;
			for ( let i = 0; i < len; i++ ) {
				nobleBarrages[i].parentNode.removeChild(nobleBarrages[i]);
			}

			nobleBarrages = document.getElementsByClassName('Barrage-listItem js-fansfloating-barrage');
			len = nobleBarrages.length;
			for ( let i = 0; i < len; i++ ) {
				nobleBarrages[i].parentNode.removeChild(nobleBarrages[i]);
			}
		}, 200);

		// 导航栏 ==============================
		// 斗鱼 logo
		$h2p_j('a.Header-logo').toggle();
		// 粉丝节
		$h2p_j('div.HeaderNav').toggle();
		// 客户端
		$h2p_j('div.Header-download-wrap').toggle();
		// 开播
		$h2p_j('div.Header-broadcast-wrap').toggle();
		// 创世幻神
		$h2p_j('span.HeaderGif-left').toggle();
		$h2p_j('span.HeaderGif-right').toggle();
		// 导航栏 ==============================

		// 主播信息
		$h2p_j('div#js-player-title').toggle();

		// 任务
		$h2p_j('div.PlayerToolbar-Task').toggle();
		$h2p_j('div.ToolbarActivityArea').toggle();
		// 幸运宝藏
		$h2p_j('div.LuckGiftEnter').toggle();
		// 太空探险
		$h2p_j('div.TurntableLottery').toggle();
		// 送礼
		$h2p_j('div.ToolbarGiftArea-GiftBox').toggle();

		// 聊天栏 ==============================
		$h2p_j('div.layout-Player-announce').toggle();
		$h2p_j('div.layout-Player-rank').toggle();
		// 聊天栏 ==============================

		if ( !bool_hide_part ) {
			bool_hide_part = true;
			hideDisable();
			$h2p_j('#btn-hide-part').attr('disabled', false);
			$h2p_j('#btn-hide-part').css('cursor', 'pointer');

			// 特定元素 ================================================
			if ( document.getElementsByClassName('Act129684 ActBase is-show').length > 0 ) {
				document.getElementsByClassName('Act129684 ActBase is-show')[0].classList.remove('is-show');
			}
			// 去除页面背景图片
			if ( window.location.href.indexOf('/topic/') > -1 ) {
				$h2p_j('div[class="bc-wrapper bc-wrapper-2"]').hide();
				$h2p_j('div#root').children('div.bc-wrapper:eq(1)').css('margin-top', '68px');
			}
			// 适配大屏幕
			if ( document.getElementsByClassName('layout-Main').length > 0 && window.screen.width > DY_maxWidth ) {
				document.getElementsByClassName('layout-Main')[0].classList.add('h2p-clearWidthLimit');
			}

			$h2p_j('#btn-hide-part').attr('disabled', false);
			$h2p_j('#btn-hide-part').css('cursor', 'pointer');

			// 放大弹幕栏
			$h2p_j('div#js-player-barrage').css('top', '0');

			$h2p_j('.layout-Main').css('margin-left', '0');
			// 清除四周空白
			// distance left and right; distance up and down
			let dist_ud = jQuery('body').height() - $h2p_j('.layout-Main').height();
			if ( window.location.href.indexOf('/topic/') > -1 ) {
				if ( $h2p_j('div#bc3').css('margin-top').length > 0 ) {
					dist_ud -= $h2p_j('div#bc3').css('margin-top').split('px')[0];
				} else {
					dist_ud -= 68;
				}
			} else {
				if ( $h2p_j('section.layout-Container').length > 0 ) {
					dist_ud -= $h2p_j('section.layout-Container').css('padding-top').split('px')[0];
				} else {
					dist_ud -= 68;
				}		
			}
			let dist_lr = window.outerWidth - $h2p_j('.layout-Main').width() - 17;
			dist_ud = dist_ud > 0 ? dist_ud : 0;
			dist_lr = dist_lr > 0 ? dist_lr : 0;
			$h2p_j('.layout-Main').css('padding', dist_ud / 2 + 'px ' + dist_lr / 2 + 'px');
			
			// 背景改为黑色
			$h2p_j('.layout-Main').css('background', 'black');

			$h2p_j('#btn-hide-part').text('显示部分元素');

			setTimeout(function(){
				if ( document.getElementsByClassName('roomSmallPlayerFloatLayout-closeBtn')[0] ) {
					document.getElementsByClassName('roomSmallPlayerFloatLayout-closeBtn')[0].click();
				}
			}, 500);

			// 恢复正常尺寸画面
			setTimeout(() => {
				document.getElementsByClassName('wfs-2a8e83')[0].click();
				setTimeout(() => {
					document.getElementsByClassName('wfs-exit-180268')[0].click();
				}, 50)
			}, 20);
		}
		else {
			bool_hide_part = false;
			hideEnable();

			// 特定元素 ================================================
			if ( document.getElementsByClassName('Act129684 ActBase').length > 0 ) {
				document.getElementsByClassName('Act129684 ActBase')[0].classList.add('is-show');
			}
			// 显示页面背景图片
			if ( window.location.href.indexOf('/topic/') > -1 ) {
				$h2p_j('div[class="bc-wrapper bc-wrapper-2"]').show();
				$h2p_j('div#root').children('div.bc-wrapper:eq(1)').css('margin-top', '0');
			}
			// 适配大屏幕
			if ( document.getElementsByClassName('layout-Main').length > 0 && window.screen.width > DY_maxWidth ) {
				document.getElementsByClassName('layout-Main')[0].classList.remove('h2p-clearWidthLimit');
			}

			$h2p_j('div#js-player-barrage').css('top', '256px');

			$h2p_j('.layout-Main').css('margin', '');
			$h2p_j('.layout-Main').css('padding', '');
			// 去除背景黑色
			$h2p_j('.layout-Main').css('background', '');

			$h2p_j('#btn-hide-part').text('隐藏部分元素');

			// 恢复正常尺寸画面
			setTimeout(() => {
				document.getElementsByClassName('wfs-2a8e83')[0].click();
				setTimeout(() => {
					document.getElementsByClassName('wfs-exit-180268')[0].click();
				}, 50)
			}, 20);

			// 显示贵族弹幕
			window.clearInterval(interval_clearNobleBarrage);
			interval_clearNobleBarrage = undefined;
		}
	}

	// 宽屏模式
	var douyu_hide_ws = function(){
		if ( bool_hide_part || bool_hide_all ) {
			return;
		}

		// 任务
		$h2p_j('div.PlayerToolbar-Task').toggle();
		$h2p_j('div.ToolbarActivityArea').toggle();
		// 幸运宝藏
		$h2p_j('div.LuckGiftEnter').toggle();
		// 太空探险
		$h2p_j('div.TurntableLottery').toggle();
		// 送礼
		$h2p_j('div.ToolbarGiftArea-GiftBox').toggle();

		// 贵宾弹幕
		$h2p_j('div.Barrage-topFloater').toggle();
		// 清除弹幕
		if ( document.getElementsByClassName('showdanmu-42b0ac').length > 0 ) {
			document.getElementsByClassName('showdanmu-42b0ac')[0].click();
		}

		// 吃鸡战绩
		$h2p_j('div.PubgInfo').toggle();

		// 超级粉丝团
		if ( $h2p_j('div#js-room-activity').length > 0 ) {
			$h2p_j('div#js-room-activity').remove();
		}

		// 聊天栏 ==============================
		$h2p_j('div.layout-Player-announce').toggle();
		$h2p_j('div.layout-Player-rank').toggle();
		// 聊天栏 ==============================

		if ( !bool_hide_ws ) {
			bool_hide_ws = true;
			hideDisable();
			$h2p_j('#btn-hide-ws').attr('disabled', false);
			$h2p_j('#btn-hide-ws').css('cursor', 'pointer');

			// 播放器宽屏模式
			let setInterval_waitWideScreen = setInterval( ()=>{
				if ( document.getElementsByClassName('wfs-2a8e83').length > 0 ) {
					$h2p_j('div.wfs-2a8e83').click();
					funcDisable();

					window.clearInterval(setInterval_waitWideScreen);
					setInterval_waitWideScreen = undefined;
				}
			}, 200);

			// 放大弹幕栏
			$h2p_j('div#js-player-barrage').css('top', '0');

			$h2p_j('#btn-hide-ws').text('退出宽屏模式');
		}
		else {
			bool_hide_ws = false;
			hideEnable();

			// 退出播放器宽屏模式
			let setInterval_waitWideScreen = setInterval( ()=>{
				if ( document.getElementsByClassName('wfs-exit-180268').length > 0 ) {
					$h2p_j('div.wfs-exit-180268').click();
					funcEnable();

					window.clearInterval(setInterval_waitWideScreen);
					setInterval_waitWideScreen = undefined;
				}
			}, 200);

			// 还原弹幕栏
			$h2p_j('div#js-player-barrage').css('top', '256px');

			$h2p_j('#btn-hide-ws').text('宽屏模式');
		}
	}

	// 隐藏全部元素(除播放界面)
	var douyu_hide_all = function(){
		if ( bool_hide_part || bool_hide_ws ) {
			return;
		}

		if ( !bool_hide_all ) {
			bool_hide_all = true;

			// 播放器宽屏模式
			let setInterval_waitWideScreen = setInterval( ()=>{
				if ( document.getElementsByClassName('wfs-2a8e83').length > 0 ) {
					$h2p_j('div.wfs-2a8e83').click();
					setTimeout(() => {
						// 隐藏弹幕框
						$h2p_j('label.layout-Player-asidetoggleButton').click();
					}, 200);
					funcDisable();

					window.clearInterval(setInterval_waitWideScreen);
					setInterval_waitWideScreen = undefined;
				}
			}, 200);
		}
		else {
			bool_hide_all = false;

			// 播放器宽屏模式
			let setInterval_waitWideScreen = setInterval( ()=>{
				if ( document.getElementsByClassName('wfs-exit-180268').length > 0 ) {
					// 显示弹幕框
					$h2p_j('label.layout-Player-asidetoggleButton').click();
					setTimeout(() => {
						$h2p_j('div.wfs-exit-180268').click();
					}, 200);
					funcEnable();

					window.clearInterval(setInterval_waitWideScreen);
					setInterval_waitWideScreen = undefined;
				}
			}, 200);
		}
	}

	// 调用初始化清爽斗鱼的函数
	initView_clearUp();






// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
// 自动化设置
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //






	// 自动签到
	var interval_checkSignInIconReady;
	var autoSignIn = () => {
		interval_checkSignInIconReady = setInterval( () => {
			if ( document.getElementsByClassName('RoomLevelDetail-level').length > 0 ) {
				window.clearInterval(interval_checkSignInIconReady);
				interval_checkSignInIconReady = undefined;
				document.getElementsByClassName('RoomLevelDetail-level')[0].click();
				// 关闭签到页面
				setTimeout(() => {
					document.getElementsByClassName('Autograph-close')[0].click();
				}, 150 );
			}
		}, 200);
	}

	// 自动领取观看鱼丸
	var autoReceiveFishBall = () => {
		let barrageCount = 0;

		var interval_autoReceiveFishBall = setInterval(() => {
			// 观看鱼丸元素存在并且有未领取的鱼丸
			if ( document.getElementsByClassName('FishpondTreasure-entranceGet').length > 0 ) {
				// 打开领取鱼丸界面
				document.getElementsByClassName('FishpondTreasure-entranceGet')[0].click();

				let taskTitles = document.getElementsByClassName('FTP-btn');
				// index 0 : 每日活跃
				// index 1 : 每周活跃
				for ( let i = 0; i < taskTitles.length && i < 2; i++ ) {
					taskTitles[i].click();
					if ( i === 0 ) {
						// 存在需要发送弹幕领取的
						if ( document.getElementsByClassName('TreasureBox-btn barrage-ready').length > 0 && barrageCount < 4 ) {
							// 发送弹幕
							document.getElementsByClassName('ChatSend-txt')[0].value = '666';
							document.getElementsByClassName('ChatSend-button')[0].click();
							barrageCount++;

							// 关闭领取鱼丸界面
							if ( document.getElementsByClassName('FTP-close').length > 0 ) {
								document.getElementsByClassName('FTP-close')[0].click();
							}
							// 打开领取鱼丸界面
							document.getElementsByClassName('FishpondTreasure-entranceGet')[0].click();
						} else {
							if ( document.getElementsByClassName('TreasureBox-btn enable').length > 0 ) {
								let treasureBtns = document.getElementsByClassName('TreasureBox-btn enable');
								for ( let j = 0; j < treasureBtns.length; j++ ) {
									treasureBtns[j].click();
								}
							}
						}
					}
					if ( document.getElementsByClassName('FTP-singleTask-btn is-finished').length > 0 ) {
						let singleTask_waitBtns = document.getElementsByClassName('FTP-singleTask-btn is-finished');
						for ( let i = 0; i < singleTask_waitBtns.length; i++ ) {
							singleTask_waitBtns[i].click();
						}
					}
				}

				document.getElementsByClassName('FTP-close')[0].click();
			}
		}, 5000);
	};

	// 自动获取已有徽章的主播
	var roomOfAnchorFan = [];
	setTimeout( () => {
		$h2p_j('html').append('<div id="FansBadgeList" style="display: none"></div>');
		setTimeout( () => {
			// 获取有粉丝牌的主播房间号
			$h2p_j('div#FansBadgeList').load('/member/cp/getFansBadgeList [class="aui_room_table fans-badge-list"]');
			setTimeout( () => {
				let ele_anchors = $h2p_j('div#FansBadgeList > table > tbody > tr');
				for ( let i = 0; i < ele_anchors.length; i++ ) {
					let ele = ele_anchors[i];
					let anchorURL = $h2p_j(ele).children('td:eq(1)').children('a:eq(0)').attr('href');
					let anchorRoom = anchorURL.split('/').pop();
					roomOfAnchorFan[i] = anchorRoom;
				}
				let anchorRoom= window.location.href.split('/').pop();
				isAnchorFan = roomOfAnchorFan.indexOf(anchorRoom) > -1;
				console.log(`有粉丝牌的主播房间号${JSON.stringify(roomOfAnchorFan)}`);
			}, 3000);
		}, 200)
	}, 1000);








// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //






	// 斗鱼功能自动化启动设置
	var h2p_DYScript_setting;
	var h2p_DYScript_setting_default = {
		defaultBarrage 		: false,
		speedMin			: 6000,
		speedMax			: 7000,
		loopBarrage 		: false,
		loopBarrageContext	: '',
		loopBarrageConTemp	: '',
		copyBarrage			: false,
		luckDrawBarrage		: false,
		keyReplys			: [
			{ 'text' : '&待定&', 'value' : '' },
			{ 'text' : '&待定&', 'value' : '' },
			{ 'text' : '&待定&', 'value' : '' },
			{ 'text' : '&待定&', 'value' : '' },
			{ 'text' : '&待定&', 'value' : '' }
		],
		keyReply			: false,
		hidePart 			: false,
		hideAll 			: false,
		hideWS				: false,
		receiveFishBall		: false,
	};
	var initView_setting = function(){
		try{
			// 获取本地用户配置
			let settingValue = JSON.parse( localStorage.getItem('h2p-DYScript-setting') );
			h2p_DYScript_setting = JSON.parse( JSON.stringify(h2p_DYScript_setting_default) );

			for ( let attr in settingValue ) {
				if (  attr in h2p_DYScript_setting ) {
					h2p_DYScript_setting[attr] = settingValue[attr];
				}
			}
			localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
		} catch (err) {
			// 重置本地配置
			console.log('重置本地配置');
			localStorage.removeItem('h2p-DYScript-setting');
			h2p_DYScript_setting = h2p_DYScript_setting_default;
			localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
		}


		// 设置面板 ===============================================================
		var div_setting = $h2p_j('<div id="div-setting" class="h2p-div-inlinepanel" style="display: none"></div>');

		// 标题 ===============================================================
		var str_div_setting_label = (function(){/*
			<div class="h2p-div-layer">
				<label>自动设定</label>
				<hr style="margin: 6px -6px; border: 1px solid #DCDCDC;">
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_setting_label = $h2p_j(str_div_setting_label);

		// 弹幕时间间隔 ===============================================================
		var str_div_interval_min_max = (function(){/*
			<div class="h2p-div-layer">
				<label>间隔:</label>
				<input id="input-auto-sendBarrage-speedMin" class="h2p-input-normal" style="width: 44px;" placeholder=">2000" />
				<text>~</text>
				<input id="input-auto-sendBarrage-speedMax" class="h2p-input-normal" style="width: 44px;" placeholder=">2000" />
				<label>毫秒</label>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_interval_min_max = $h2p_j(str_div_interval_min_max);


		// 是否自动发送默认弹幕 ===============================================================
		var str_div_auto_barrage_defaultAndCopy = (function(){/*
			<div class="h2p-div-layer">
				<div class="h2p-div-layer-half">
					<input id="input-auto-defaultBarrage" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">默认弹幕</label>
				</div>
				<div class="h2p-div-layer-half" style="left: 50%">
					<input id="input-auto-copyBarrage" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">抄袭弹幕</label>
				</div>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_auto_barrage_defaultAndCopy = $h2p_j(str_div_auto_barrage_defaultAndCopy);


		// 是否自动发送循环弹幕 ===============================================================
		var str_div_auto_barrage_loopAndKeyReply = (function(){/*
			<div class="h2p-div-layer">
				<div class="h2p-div-layer-half">
					<input id="input-auto-loopBarrage" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">循环弹幕</label>
				</div>
				<div class="h2p-div-layer-half" style="left: 50%">
					<input id="input-auto-keyReplyBarrage" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">关键词回复</label>
				</div>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_auto_barrage_loopAndKeyReply = $h2p_j(str_div_auto_barrage_loopAndKeyReply);


		// 是否自动发送抽奖弹幕 ===============================================================
		var str_div_auto_luckDrawBarrage = (function(){/*
			<div class="h2p-div-layer">
				<input id="input-auto-luckDrawBarrage" class="h2p-checkbox-left" type="checkbox" value="" />
				<label class="h2p-label-checkbox-left">抽奖弹幕</label>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_auto_luckDrawBarrage = $h2p_j(str_div_auto_luckDrawBarrage);


		// 隐藏选项 ===============================================================
		var str_div_auto_hideOption = (function(){/*
			<div class="h2p-div-layer">
				<div class="h2p-div-layer-half">
					<input id="input-auto-hidePart" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">部分隐藏</label>
				</div>
				<div class="h2p-div-layer-half" style="left: 50%">
					<input id="input-auto-hideWS" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">宽屏模式</label>
				</div>
			</div>
			<hr style="margin: 6px; border: 1px solid transparent;">
			<div class="h2p-div-layer">
				<div class="h2p-div-layer-half">
					<input id="input-auto-hideAll" class="h2p-checkbox-left" type="checkbox" value="" />
					<label class="h2p-label-checkbox-left">全部隐藏</label>
				</div>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_auto_hideOption = $h2p_j(str_div_auto_hideOption);


		// 是否自动领取鱼丸 ===============================================================
		var str_div_auto_receiveFishBall = (function(){/*
			<div class="h2p-div-layer">
				<input id="input-auto-receiveFishBall" class="h2p-checkbox-left" type="checkbox" value="" />
				<label class="h2p-label-checkbox-left">自动领取鱼丸</label>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_auto_receiveFishBall = $h2p_j(str_div_auto_receiveFishBall);


		// 分隔线  ===============================================================
		var hr_style = '<hr style="margin: 6px; border: 1px solid transparent;">';


		// 添加所有设置按钮
		$h2p_j(div_setting).append(div_setting_label);
		$h2p_j(div_setting).append($h2p_j(hr_style));
		$h2p_j(div_setting).append(div_interval_min_max);
		$h2p_j(div_setting).append($h2p_j(hr_style));
		$h2p_j(div_setting).append(div_auto_barrage_defaultAndCopy);
		$h2p_j(div_setting).append($h2p_j(hr_style));
		$h2p_j(div_setting).append(div_auto_barrage_loopAndKeyReply);
		$h2p_j(div_setting).append($h2p_j(hr_style));
		$h2p_j(div_setting).append(div_auto_luckDrawBarrage);
		$h2p_j(div_setting).append($h2p_j(hr_style));
		$h2p_j(div_setting).append(div_auto_hideOption);
		$h2p_j(div_setting).append($h2p_j(hr_style));
		$h2p_j(div_setting).append(div_auto_receiveFishBall);

		$h2p_j(div_DYScript).append(div_setting);


		var check_mountPoint_settingIcon = setInterval( function(){
			if ( document.getElementById('div-DYScript') && document.getElementsByClassName('ChatToolBar')[0] ) {
				window.clearInterval( check_mountPoint_settingIcon );

				bool_settingReady = true;

				// 是否自动发送默认弹幕事件
				$h2p_j('#input-auto-defaultBarrage').click(function(){
					h2p_DYScript_setting.defaultBarrage = document.getElementById('input-auto-defaultBarrage').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 是否自动发送抽抄袭幕事件
				$h2p_j('#input-auto-copyBarrage').click(function(){
					h2p_DYScript_setting.copyBarrage = document.getElementById('input-auto-copyBarrage').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 是否自动发送循环弹幕事件
				$h2p_j('#input-auto-loopBarrage').click(function(){
					h2p_DYScript_setting.loopBarrage = document.getElementById('input-auto-loopBarrage').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 是否自动发送关键词回复
				$h2p_j('#input-auto-keyReplyBarrage').click(function(){
					h2p_DYScript_setting.keyReply = document.getElementById('input-auto-keyReplyBarrage').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 是否自动发送抽奖弹幕事件
				$h2p_j('#input-auto-luckDrawBarrage').click(function(){
					h2p_DYScript_setting.luckDrawBarrage = document.getElementById('input-auto-luckDrawBarrage').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 是否自动部分隐藏事件
				$h2p_j('#input-auto-hidePart').click(function(){
					document.getElementById('input-auto-hideAll').checked = false;
					document.getElementById('input-auto-hideWS').checked = false;
					h2p_DYScript_setting.hidePart = document.getElementById('input-auto-hidePart').checked;
					h2p_DYScript_setting.hideAll = document.getElementById('input-auto-hideAll').checked;
					h2p_DYScript_setting.hideWS = document.getElementById('input-auto-hideWS').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 是否自动宽屏模式
				$h2p_j('#input-auto-hideWS').click(function(){
					document.getElementById('input-auto-hidePart').checked = false;
					document.getElementById('input-auto-hideAll').checked = false;					
					h2p_DYScript_setting.hidePart = document.getElementById('input-auto-hidePart').checked;
					h2p_DYScript_setting.hideAll = document.getElementById('input-auto-hideAll').checked;
					h2p_DYScript_setting.hideWS = document.getElementById('input-auto-hideWS').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 是否自动全部隐藏事件
				$h2p_j('#input-auto-hideAll').click(function(){
					document.getElementById('input-auto-hidePart').checked = false;
					document.getElementById('input-auto-hideWS').checked = false;
					h2p_DYScript_setting.hidePart = document.getElementById('input-auto-hidePart').checked;
					h2p_DYScript_setting.hideAll = document.getElementById('input-auto-hideAll').checked;
					h2p_DYScript_setting.hideWS = document.getElementById('input-auto-hideWS').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 是否自动领取鱼丸事件
				$h2p_j('#input-auto-receiveFishBall').click(function(){
					h2p_DYScript_setting.receiveFishBall = document.getElementById('input-auto-receiveFishBall').checked;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				});

				// 发送速度输入框事件
				var input_auto_speedMin = document.getElementById('input-auto-sendBarrage-speedMin');
				input_auto_speedMin.onblur = input_auto_speedMin.onkeyup = function(){
					var value = this.value;
					value = value.replace(/[^\d]/g,'');
					while ( value.length > 0 && value[0] == '0' ) {
						value = value.substr(1, value.length);
					}
					if ( value.length > 6 ) {
						value = value.substr(0, 6);
					}
					this.value = value;
					h2p_DYScript_setting.speedMin = parseInt(value) ? parseInt(value) : interval_default;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				}
				var input_auto_speedMax = document.getElementById('input-auto-sendBarrage-speedMax');
				input_auto_speedMax.onblur = input_auto_speedMax.onkeyup = function(){
					var value = this.value;
					value = value.replace(/[^\d]/g,'');
					while( value.length > 0 && value[0] == '0' ) {
						value = value.substr(1, value.length);
					}
					if ( value.length > 6 ) {
						value = value.substr(0, 6);
					}
					this.value = value;
					h2p_DYScript_setting.speedMax = parseInt(value) ? parseInt(value) : interval_default + 1000;
					localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
				}
			}
		}, 1000);
	}

	initView_setting();

	(function(){
		// 自动发弹幕自动化设置生效
		var interval_setting_barrage_TakeEffect = setInterval(function(){
			if ( bool_settingReady && bool_barrageReady ) {
				let auto_send = false;
				document.getElementById('input-auto-sendBarrage-speedMin').value = h2p_DYScript_setting.speedMin;
				document.getElementById('input-auto-sendBarrage-speedMax').value = h2p_DYScript_setting.speedMax;
				document.getElementById('input-sendBarrage-speedMin').value = h2p_DYScript_setting.speedMin;
				document.getElementById('input-sendBarrage-speedMax').value = h2p_DYScript_setting.speedMax;
				if ( h2p_DYScript_setting.defaultBarrage ) {
					document.getElementById('input-barrage-isDefault').checked = true;
					document.getElementById('input-auto-defaultBarrage').checked = true;
					console.log('启动:自动发送默认弹幕');
					auto_send = true;
				}
				if ( h2p_DYScript_setting.copyBarrage ) {
					document.getElementById('input-barrage-isCopy').checked = true;
					document.getElementById('input-auto-copyBarrage').checked = true;
					console.log('启动:自动发送抄袭弹幕');
					auto_send = true;
				}

				document.getElementById('input-loopBarrage-content').value = h2p_DYScript_setting.loopBarrageContext;
				if ( h2p_DYScript_setting.loopBarrage ) {
					document.getElementById('input-barrage-isLoop').checked = true;
					document.getElementById('input-auto-loopBarrage').checked = true;
					console.log('启动:自动发送循环弹幕');
					auto_send = true;
				}
				if ( h2p_DYScript_setting.keyReply ) {
					document.getElementById('input-barrage-isKeyReply').checked = true;
					document.getElementById('input-auto-keyReplyBarrage').checked = true;
					console.log('启动:自动关键词回复弹幕');
					auto_send = true;
				}

				if ( h2p_DYScript_setting.luckDrawBarrage ) {
					document.getElementById('input-barrage-isLuckDraw').checked = true;
					document.getElementById('input-auto-luckDrawBarrage').checked = true;
					console.log('启动:自动发送抽奖弹幕');
					auto_send = true;
				}
				// 显示关键词和回复内容
				let keyReplys = h2p_DYScript_setting.keyReplys;
				for ( let i = 0; i < keyReplys.length && i < keyReply_maxNum; i++ ) {
					if ( keyReplys[i] ) {
						let ele = document.getElementById('select-keyReply').children[i];
						let keyReply = keyReplys[i];
						ele.textContent = keyReply.text;
						ele.value = keyReply.value;
						if ( i == 0 ) {
							$h2p_j('input#input-keyReply-key').val(keyReply.text);
							$h2p_j('input#input-keyReply-reply').val(keyReply.value);
						}
					}
				}
				if ( auto_send ) {
					document.getElementById('btn-sendBarrage').click();
				}
				window.clearInterval(interval_setting_barrage_TakeEffect);
			}
		}, 500);

		// 清爽模式自动化设置生效
		var interval_setting_clear_TakeEffect = setInterval(function(){
			if ( bool_settingReady && bool_clearReady ) {
				if ( h2p_DYScript_setting.hidePart ) {
					document.getElementById('btn-hide-part').click();
					document.getElementById('input-auto-hidePart').checked = true;
					console.log('启动:自动隐藏部分');
				}
				else if ( h2p_DYScript_setting.hideWS ) {
					document.getElementById('btn-hide-ws').click();
					document.getElementById('input-auto-hideWS').checked = true;
					console.log('启动:宽屏模式');
				}
				else if ( h2p_DYScript_setting.hideAll ) {
					document.getElementById('btn-hide-all').click();
					document.getElementById('input-auto-hideAll').checked = true;
					console.log('启动:自动隐藏全部');
				}
				window.clearInterval(interval_setting_clear_TakeEffect);
			}
		}, 500);

		// 领取鱼丸自动化设置生效
		var interval_setting_receiveFishBall_TakeEffect = setInterval(function(){
			if ( bool_settingReady && h2p_DYScript_setting.receiveFishBall ) {
				autoSignIn();
				autoReceiveFishBall();
				document.getElementById('input-auto-receiveFishBall').checked = true;
				console.log('启动:自动领取观看鱼丸');
				window.clearInterval(interval_setting_receiveFishBall_TakeEffect);
			}
		}, 500);
	})();


	// 检查弹幕图标挂载点(斗鱼弹幕输入框)是否加载完成
	var check_mountPoint_DYScriptIcon = setInterval( function(){
		if ( document.getElementById('div-sendBarrage') && document.getElementsByClassName('ChatToolBar')[0] ) {
			let div_sign = $h2p_j('<div class="h2p-div-sign" style="margin: -8px 0 0 -3px;" title="斗鱼脚本"></div>');

			let btn_sign = $h2p_j('<span id="button-DYScript" class="h2p-span-sign">🐯</span>');
			$h2p_j(btn_sign).click(function(){
				$h2p_j('div#div-DYScript').toggle();
			});

			$h2p_j(div_sign).append(btn_sign);

			$h2p_j( $h2p_j('div.ChatToolBar')[0] ).append( div_sign );
			window.clearInterval( check_mountPoint_DYScriptIcon );
		}
	}, 1000);

	$h2p_j(div_DYScript).append(div_DYScriptTab);
})();