Greasy Fork is available in English.

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

默认弹幕、循环弹幕、抽奖弹幕。清爽模式,隐藏无关元素。领取观看鱼丸(不是鱼秀宝箱)。以上功能可以设置是否自动启动。

Versão de: 05/07/2019. Veja: a última versão.

// ==UserScript==
// @name			斗鱼自动发弹幕、领取观看鱼丸、清爽模式
// @namespace		http://tampermonkey.net/
// @version			0.7.3
// @icon			http://www.douyutv.com/favicon.ico
// @description		默认弹幕、循环弹幕、抽奖弹幕。清爽模式,隐藏无关元素。领取观看鱼丸(不是鱼秀宝箱)。以上功能可以设置是否自动启动。
// @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.3.18-V0.2.0 循环弹幕可以设置多条,随机发送;新增弹幕倒计时;界面美化一下?抽奖弹幕新增一种查询类型
// @note			2019.3.18-V0.3.0 界面修改;界面可隐藏;可以设置是否发送默认弹幕
// @note			2019.3.18-V0.3.1 小 BUG 修复
// @note			2019.3.19-V0.4.0 引入 JQuery 改写,还没改完;更新了弹幕抽奖元素获取(因为斗鱼改了);增加设置抽奖弹幕次数;发送弹幕时可以修改循环弹幕
// @note			2019.3.23-V0.4.1 完善了一下代码;完善了界面;修改了字体
// @note			2019.3.23-V0.5.0 添加了斗鱼清爽模式:隐藏部分、隐藏全部、删除元素
// @note			2019.3.23-V0.5.1 修缮清爽模式;添加自动领取观看鱼丸(不是鱼秀宝箱)
// @note			2019.3.24-V0.5.2 修缮自动领取观看鱼丸;修缮隐藏全部元素的返回按钮
// @note			2019.3.24-V0.5.3 修改介绍。。。
// @note			2019.3.24-V0.5.4 修缮自动领取观看鱼丸,如果无法领取则清除循环
// @note			2019.3.24-V0.5.5 解决 jQuery $ 冲突;清爽模式处理粉丝节
// @note			2019.3.24-V0.6.0 添加“功能自动化”设置面板
// @note			2019.3.24-V0.6.1 修改介绍
// @note			2019.3.24-V0.6.2 代码重写
// @note			2019.3.24-V0.6.3 添加抄袭弹幕;完善设置信息存储
// @note			2019.5.25-V0.6.4 完善清爽模式退出
// @note			2019.6.11-V0.6.5 更新斗鱼领取宝箱
// @note			2019.7.04-V0.7.0 聚合脚本图标;删去抽奖弹幕
// @note			2019.7.04-V0.7.1 添加抽奖弹幕;发送时间设定改为间隔时间,单位改为毫秒;修改循环弹幕会自动保存
// @note			2019.7.04-V0.7.2 小小修缮
// @note			2019.7.04-V0.7.3 发送弹幕时间在间隔内随机
// @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;					// 弹幕发送间隔时间
	var interval_default = 6000;		// 弹幕发送默认间隔时间
	var luckDrawCountDown = 0;			// 弹幕抽奖活动倒计时
	var barrageCountDown = 0;			// 弹幕倒计时
	var barrageLuckDraw = '';			// 抽奖弹幕内容
	var count_luckDraw = 0;				// 抽奖弹幕实际发送次数
	var count_luckDrawTotal = 0;		// 抽奖弹幕总共发送次数
	var count_luckDrawDefault = 2;		// 抽奖弹幕默认发送次数

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

	// 创建元素样式
	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		: #A9A9A9 5px 0 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%;
			height			: 100%;
			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(){
		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;">📢</div>');
		$h2p_j(div_tab_barrage).click(function(){
			$h2p_j('div#div-sendBarrage').show();
			$h2p_j('div#div-tab-sendBarrage').css('background', '#DDDDDD');
			$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_tab_light = $h2p_j('<div id="div-tab-DYLight" class="h2p-div-tab" style="width: 33.4%">✡️</div>');
		$h2p_j(div_tab_light).click(function(){
			$h2p_j('div#div-sendBarrage').hide();
			$h2p_j('div#div-tab-sendBarrage').css('background', '#f5f5f5');
			$h2p_j('div#div-DYLight').show();
			$h2p_j('div#div-tab-DYLight').css('background', '#DDDDDD');
			$h2p_j('div#div-setting').hide();
			$h2p_j('div#div-tab-setting').css('background', '#f5f5f5');
		});

		let div_tab_setting = $h2p_j('<div id="div-tab-setting" class="h2p-div-tab">⏲️</div>');
		$h2p_j(div_tab_setting).click(function(){
			$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').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 = (function(){/*
			<div class="h2p-div-layer">
				<label>间隔:</label>
				<input id="input-sendBarrage-speedMin" class="h2p-input-normal" style="width: 56px;" placeholder=">2000" />
				<text>~</text>
				<input id="input-sendBarrage-speedMax" class="h2p-input-normal" style="width: 56px;" placeholder=">2000" />
				<label>毫秒</label>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_speed = $h2p_j(str_div_speed);

		// 发送弹幕的倒计时  ===============================================================
		var str_div_countDown = (function(){/*
			<div class="h2p-div-layer">
				<label class="h2p-color-font-green">弹幕倒计时:</label>
				<input id="input-countDown" class="h2p-input-normal h2p-color-background-off" style="width: 65px;" disabled/>
				<label>秒</label>
			</div>
		*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
		var div_countDown = $h2p_j(str_div_countDown);

		// 是否发送默认弹幕  ===============================================================
		var str_div_defaultBarrage = (function(){/*
			<div class="h2p-div-layer" style="height: 22px;">
				<input id="input-barrage-isDefault" 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_defaultBarrage = $h2p_j(str_div_defaultBarrage);

		// 是否发送循环弹幕  ===============================================================
		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_copyBarrage = (function(){/*
			<div class="h2p-div-layer">
				<input id="input-barrage-isCopy" 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_copyBarrage = $h2p_j(str_div_copyBarrage);

		// 是否参加弹幕抽奖  ===============================================================
		var str_div_luckDrawBarrage = (function(){/*
			<div class="h2p-div-layer">
				<div class="h2p-div-layer-half">
					<input id="input-isLuckDrawBarrage" 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);
		$h2p_j(div_barrage).append($h2p_j(hr_style));
		$h2p_j(div_barrage).append(div_countDown);
		$h2p_j(div_barrage).append($h2p_j(hr_style));
		$h2p_j(div_barrage).append(div_defaultBarrage);
		$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_copyBarrage);
		$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 ( $h2p_j('div.layout-Player-asideMainTop')[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;
				}
			}
		}, 1000);
	}

	function sendBarrage(){
		barrageCountDown = parseInt( interval / 100 ) / 10;

		var barrage = '';
		var isLuckDrawBarrage = false;

		// 优先抽奖弹幕
		if ( document.getElementById('input-isLuckDrawBarrage') && document.getElementById('input-isLuckDrawBarrage').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{
						barrageLuckDraw = document.getElementsByClassName('ULotteryStart-danmuDesc UserLottery-ellipse is-coping')[0].textContent;
						barrageLuckDraw = barrageLuckDraw.split(':')[1];
					} 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 ( ( barrage == undefined || barrage.length == 0 ) && 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 ( ( barrage == undefined || barrage.length == 0 ) && 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 ( ( barrage == undefined || barrage.length == 0 ) && 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 );
		window.clearInterval(interval_autoSendBarrage);
		interval_autoSendBarrage = setInterval(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 = setInterval(sendBarrage, interval);
	}

	// 停止发送弹幕
	function clearInterval_autoSendBarrage(){
		window.clearInterval(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;
		}
	*/}).toString().split('/*')[1].split('*/')[0];
	document.head.appendChild(h2p_DYScript_style_clear);	
	var bool_hide_part = false;
	var bool_hide_all = false;

	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';
		}


		// 分隔线  ===============================================================
		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_DYScript).append(div_DYLight);


		// 隐藏全部返回键
		var btn_hide_all_back = document.createElement('button');
		$h2p_j(btn_hide_all_back).attr('id', 'btn-hide-all-back');
		$h2p_j(btn_hide_all_back).attr('class', 'h2p-btn-hideAll-back');
		$h2p_j(btn_hide_all_back).text('退出清爽');
		$h2p_j(btn_hide_all_back).click(douyu_hide_all);
		$h2p_j(btn_hide_all_back).mouseenter(function(){
			$h2p_j(this).css('background', '#00ddbb');
		});
		$h2p_j(btn_hide_all_back).mouseleave(function(){
			$h2p_j(this).css('background', 'transparent');
		});

		document.body.appendChild(btn_hide_all_back);

		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 douyu_hide = function(){
		// 背景图片
		$h2p_j('#js-background-holder').toggle();
		// 左侧边栏
		$h2p_j('#js-aside').toggle();
		// 竞猜
		$h2p_j('div#js-player-guessgame').toggle();
		// 任务、送礼物栏
		$h2p_j('div#js-player-toolbar').toggle();
		// 友邻、竞猜
		$h2p_j('div#js-bottom').toggle();

		try{
			if ( !bool_hide_part && !bool_hide_all ){
				// 特定元素 ================================================
				document.getElementsByClassName('Act129684 ActBase is-show')[0].classList.remove('is-show');
				// 特定元素 ================================================
			}
			else {
				// 特定元素 ================================================
				document.getElementsByClassName('Act129684 ActBase')[0].classList.add('is-show');
				// 特定元素 ================================================
			}
		} catch (err) {}
	}

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

		douyu_hide();

		// 导航栏 ==============================
		// 斗鱼 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('div.layout-Player-rank').toggle();
		// 公告栏
		$h2p_j('div.layout-Player-announce').toggle();

		// 他的视频
		$h2p_j('div.Title-roomOtherTop').toggle();
		// 友邻
		$h2p_j('div.Title-addFriend').toggle();
		$h2p_j('div.Title-anchorFriend').toggle();
		// 客户端查看
		$h2p_j('.Title-blockInline').toggle();

		if ( !bool_hide_part ){
			bool_hide_part = true;
			$h2p_j('#btn-hide-all').attr('disabled', true);
			$h2p_j('#btn-hide-all').css('cursor', 'default');

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

			$h2p_j('.layout-Main').css('padding', '2px 35px 10px 35px');
			$h2p_j('.layout-Main').css('margin-left', '0');
			// 背景改为黑色
			$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);
		}
		else {
			bool_hide_part = false;
			$h2p_j('#btn-hide-all').attr('disabled', false);
			$h2p_j('#btn-hide-all').css('cursor', 'pointer');

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

			$h2p_j('.layout-Main').css('padding', '10px 120px 0 120px');
			$h2p_j('.layout-Main').css('margin-left', '48px');
			// 去除背景黑色
			$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);
		}
	}

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

		douyu_hide();

		// 导航栏
		$h2p_j('#js-header').toggle();
		// 主播信息栏
		$h2p_j('div#js-player-title').toggle();
		// 右侧边栏
		$h2p_j('div.layout-Player-aside').toggle();

		// 放大剩余部分
		var height = $h2p_j(window).height();
		height = height >= 788 ? height : 788;

		var width = $h2p_j(window).width();
		width = width >= 1402 ? width : 1402;

		var margin_right = parseInt( ( width - height / 788 * 1402 ) / 2 );

		if ( !bool_hide_all ){
			bool_hide_all = true;
			$h2p_j('#btn-hide-part').attr('disabled', true);
			$h2p_j('#btn-hide-part').css('cursor', 'default');

			$h2p_j('.layout-Container').css('padding-top', '0');
			$h2p_j('.layout-Main').css('margin-left', 'auto');
			$h2p_j('.layout-Main').css('margin-right', 'auto');
			$h2p_j('.layout-Main').css('padding', '5px 0 0 0');
			$h2p_j('div.layout-Player-main').css('margin', '0 ' + margin_right + 'px');
			// 背景改为黑色
			$h2p_j('.layout-Main').css('background', 'black');
			$h2p_j('.layout-Container').css('background', 'black');
			$h2p_j('.layout-Container').css('height', '100%');

			$h2p_j('#btn-hide-all-back').show();

			setTimeout(function(){
				if ( document.getElementsByClassName('roomSmallPlayerFloatLayout-closeBtn') ){
					document.getElementsByClassName('roomSmallPlayerFloatLayout-closeBtn')[0].click();
				}
			}, 500);
		}
		else {
			bool_hide_all = false;
			$h2p_j('#btn-hide-part').attr('disabled', false);
			$h2p_j('#btn-hide-part').css('cursor', 'pointer');

			$h2p_j('.layout-Container').css('padding-top', '68px');
			$h2p_j('.layout-Main').css('margin-left', '48px');
			$h2p_j('.layout-Main').css('padding', '10px 120px 0 120px');
			$h2p_j('div.layout-Player-main').css('margin', '0 346px 0 0');
			// 去除背景黑色
			$h2p_j('.layout-Main').css('background', '');
			$h2p_j('.layout-Container').css('background', '');
			$h2p_j('.layout-Container').css('height', 'auto');

			$h2p_j('#btn-hide-all-back').hide();

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

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






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






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

		// 自动签到
		setTimeout( () => {
			document.getElementsByClassName('RoomLevelDetail-level')[0].click();
			// 关闭签到页面
			setTimeout( function(){
				document.getElementsByClassName('Autograph-close')[0].click();
			}, 150 );
		}, 500 );

		var interval_autoReceiveFishBall = setInterval(function(){
			// 观看鱼丸元素存在并且有未领取的鱼丸
			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-waitBtn').length > 0 ) {
						let singleTask_waitBtns = document.getElementsByClassName('FTP-singleTask-waitBtn');
						for ( let i = 0; i < singleTask_waitBtns.length; i++ ) {
							singleTask_waitBtns[i].click();
						}
					}
				}

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






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






	// 斗鱼功能自动化启动设置
	var h2p_DYScript_setting_abandon = {
		speed				: '',
		version				: '',
	}
	var h2p_DYScript_setting;
	var h2p_DYScript_setting_default = {
		defaultBarrage 		: false,
		speedMin			: 6000,
		speedMax			: 7000,
		loopBarrage 		: false,
		loopBarrageContext	: '',
		loopBarrageConTemp	: '',
		copyBarrage			: false,
		luckDrawBarrage		: false,
		hidePart 			: false,
		hideAll 			: 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_interval_min_max = (function(){/*
			<div class="h2p-div-layer">
				<label>间隔:</label>
				<input id="input-auto-sendBarrage-speedMin" class="h2p-input-normal" style="width: 56px;" placeholder=">2000" />
				<text>~</text>
				<input id="input-auto-sendBarrage-speedMax" class="h2p-input-normal" style="width: 56px;" 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_defaultBarrage = (function(){/*
			<div class="h2p-div-layer">
				<input id="input-auto-defaultBarrage" 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_defaultBarrage = $h2p_j(str_div_auto_defaultBarrage);


		// 是否自动发送抽奖弹幕 ===============================================================
		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_loopBarrage = (function(){/*
			<div class="h2p-div-layer">
				<input id="input-auto-loopBarrage" 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_loopBarrage = $h2p_j(str_div_auto_loopBarrage);


		// 是否自动发送抄袭弹幕 ===============================================================
		var str_div_auto_copyBarrage = (function(){/*
			<div class="h2p-div-layer">
				<input id="input-auto-copyBarrage" 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_copyBarrage = $h2p_j(str_div_auto_copyBarrage);


		// 隐藏选项 ===============================================================
		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-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_interval_min_max);
		$h2p_j(div_setting).append($h2p_j(hr_style));
		$h2p_j(div_setting).append(div_auto_defaultBarrage);
		$h2p_j(div_setting).append($h2p_j(hr_style));
		$h2p_j(div_setting).append(div_auto_loopBarrage);
		$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_copyBarrage);
		$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-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-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-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(){
					h2p_DYScript_setting.hidePart = document.getElementById('input-auto-hidePart').checked;
					document.getElementById('input-auto-hideAll').checked = false;
					h2p_DYScript_setting.hideAll = document.getElementById('input-auto-hideAll').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;
					h2p_DYScript_setting.hidePart = document.getElementById('input-auto-hidePart').checked;
					h2p_DYScript_setting.hideAll = document.getElementById('input-auto-hideAll').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;
				}
				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.copyBarrage ){
					document.getElementById('input-isCopyBarrage').checked = true;
					document.getElementById('input-auto-copyBarrage').checked = true;
					console.log('启动:自动发送抄袭弹幕');
					auto_send = true;
				}
				if ( h2p_DYScript_setting.luckDrawBarrage ){
					document.getElementById('input-isLuckDrawBarrage').checked = true;
					document.getElementById('input-auto-luckDrawBarrage').checked = true;
					console.log('启动:自动发送抽奖弹幕');
					auto_send = true;
				}
				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.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 ){
				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);
})();