// ==UserScript==
// @name 斗鱼自动发弹幕、领取观看鱼丸、清爽模式
// @namespace http://tampermonkey.net/
// @version 0.9.3
// @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 快捷退出清爽模式
// @note 2019.08.26-V0.8.8 清爽模式位置更换
// @note 2019.09.05-V0.8.9 修缮关键词回复对于有粉丝牌无效的问题
// @note 2019.09.08-V0.9.0 关键词回复可以添加和删除;新一轮抽奖开启后清除上一轮抽奖弹幕内容
// @note 2019.09.10-V0.9.1 解决初始化失败的问题
// @note 2019.09.10-V0.9.2 解决关键词回复自己弹幕的问题
// @note 2019.09.10-V0.9.3 解决初始化失败的问题
// @grant none
// @downloadURL none
// ==/UserScript==
(function(){
'use strict';
// 解决 jQuery $ 符号冲突
var $h2p_j = jQuery.noConflict();
var INVL_barSend = undefined; // 自动发弹幕
var INVL_barCD = undefined; // 弹幕倒计时
var BOOL_ok_sendBar = false; // 自动弹幕模块是否装载完毕
var BOOL_ok_clear = false; // 自动清理模块是否装载完毕
var BOOL_ok_config = 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 MAX_barList = 120; // 弹幕列表最多弹幕条数
const MAX_DYWidth = 1200;
var userInfo = {
nickName : '', // 昵称
isAnchorFan : false, // 是否拥有主播的粉丝牌
}
// 创建元素样式
var h2p_DYScript_style_sendBar = document.createElement('style');
h2p_DYScript_style_sendBar.type = 'text/css';
h2p_DYScript_style_sendBar.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 }
.h2p-hover-pointer:hover {
cursor : pointer;
background : #DDDDDD;
}
*/}).toString().split('/*')[1].split('*/')[0];
document.head.appendChild(h2p_DYScript_style_sendBar);
// 整个面板 ===============================================================
var div_DYScript = $h2p_j('
');
// 面板底部功能键
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('');
// 发弹幕
let div_tab_barrage = $h2p_j('📢
');
$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('✡️
');
$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('⏲️
');
$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('');
// 发送弹幕的速度 And 倒计时 ===============================================================
var str_div_speed_countDown = (function(){/*
~
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
var div_speed_countDown = $h2p_j(str_div_speed_countDown);
// 是否发送默认弹幕 ===============================================================
var str_div_defaultAndCopyBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
var div_defaultAndCopyBarrage = $h2p_j(str_div_defaultAndCopyBarrage);
// 是否发送循环弹幕 ===============================================================
var str_div_loopBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
var div_loopBarrage = $h2p_j(str_div_loopBarrage);
// 是否使用关键词自动回复 ===============================================================
var str_div_keyReply = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
var div_keyReply = $h2p_j(str_div_keyReply);
// 是否参加弹幕抽奖 ===============================================================
var str_div_luckDrawBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
var div_luckDrawBarrage = $h2p_j(str_div_luckDrawBarrage);
// 弹幕发送按钮 ===============================================================
var div_barrageSendBtn = $h2p_j('');
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 ( INVL_barSend == 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 = '
';
// 添加所有元素 ===============================================================
$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_barPanel = setInterval( function(){
if ( $h2p_j('div.layout-Player-asideMainTop').length > 0 && $h2p_j('div.BarrageSuperLink').length > 0 ) {
setTimeout( function(){ $h2p_j('div.layout-Player-asideMainTop').append( div_DYScript ); }, 3000);
window.clearInterval( check_mountPoint_barPanel );
}
}, 1000);
// 检查弹幕图标挂载点(斗鱼弹幕输入框)是否加载完成
var check_mountPoint_barIcon = setInterval( function(){
if ( document.getElementById('div-sendBarrage') && document.getElementsByClassName('ChatToolBar')[0] ) {
window.clearInterval( check_mountPoint_barIcon );
BOOL_ok_sendBar = 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;
}
// 关键词自动回复添加按钮监听
let keyReplyAdd = document.getElementById('btn-add-keyReply');
keyReplyAdd.onclick = ()=>{
$h2p_j('select#select-keyReply').append( $h2p_j('') );
$h2p_j('#select-keyReply > option:last').attr('selected', 'true');
$h2p_j('input#input-keyReply-key').val( '&待定&' );
$h2p_j('input#input-keyReply-reply').val('');
h2p_DYScript_setting.keyReplys.push({ 'text' : '&待定&', 'value' : '' });
localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
}
// 关键词自动回复删除按钮监听
let keyReplyDelete = document.getElementById('btn-delete-keyReply');
keyReplyDelete.onclick = ()=>{
let index = document.getElementById('select-keyReply').selectedIndex;
$h2p_j('select#select-keyReply > option:eq(' + index + ')').remove();
h2p_DYScript_setting.keyReplys.splice(index, 1);
localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) );
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() );
}
// 关键词自动回复 option click 监听
let keyReplys = document.getElementById('select-keyReply');
keyReplys.onclick = 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 ) {
// 清除上一轮抽奖内容
barrageLuckDraw = undefined;
// 新一轮抽奖弹幕
count_luckDraw = 0;
// 显示抽奖内容
temp1.click();
try{
// 获取抽奖弹幕条件
let barrageRequirement = document.getElementsByClassName('ULotteryStart-rule')[0].children[0].textContent.split(':')[1];
const requirements = ['发弹幕', '发弹幕+关注主播'];
if ( barrageRequirement.indexOf('赠送礼物') < 0 && barrageRequirement.indexOf('福袋') < 0 && ( requirements.indexOf( barrageRequirement ) > -1 || ( userInfo.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 bars = $h2p_j('ul#js-barrage-list > li');
if ( bars.length > MAX_barList ) {
let surplusNum = bars.length - MAX_barList;
$h2p_j('#js-barrage-list > li:lt(' + surplusNum + ')').remove();
INDEX_keyReply = INDEX_keyReply > surplusNum ? INDEX_keyReply - surplusNum : 0;
bars = $h2p_j('ul#js-barrage-list > li');
}
for ( let i = 0; i < bars.length; i++ ) {
let ele = bars[i];
if ( $h2p_j(ele).children().length == 0 ) {
if ( i < INDEX_keyReply ) { INDEX_keyReply--; }
$h2p_j(ele).remove();
bars.splice(i, 1);
i--;
}
}
for ( let i = INDEX_keyReply; i < bars.length; i++ ) {
INDEX_keyReply++;
let ele = bars[i];
let bar_check = $h2p_j(ele).find('span[class^="Barrage-content"]').text().replace(/\s/g, '');
let nickName = $h2p_j(ele).find('span[class^="Barrage-nickName"]').attr('title');
let keyReplys = h2p_DYScript_setting.keyReplys;
let keys = [];
keyReplys.forEach((ele) => {
if ( ele.key != undefined && ele.key.length > 0 && ele.key != '&待定&' ) { keys[keys.length] = ele.key; }
});
let index = ((bar_check) => {
for ( let j = 0; j < keys.length; j++ ) {
if ( bar_check.indexOf(keys[j]) > -1 && nickName != userInfo.nickName ) { return j; }
}
return -1;
})(bar_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 ( INVL_barCD == 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);
INVL_barSend = 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('🔥');
INVL_barSend = setTimeout(sendBarrage, interval);
}
// 停止发送弹幕
function clearInterval_autoSendBarrage(){
window.clearTimeout(INVL_barSend);
INVL_barSend = 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;
}
INVL_barCD = setInterval(showBarrageCountDown, 100);
}
function clearInterval_barrageCountDown(){
window.clearInterval(INVL_barCD);
INVL_barCD = 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('');
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_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';
}
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 = '
';
// 添加所有清爽按钮
$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_ws);
$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 check_mountPoint_clearIcon = setInterval( function(){
if ( document.getElementById('div-DYScript') && document.getElementsByClassName('ChatToolBar')[0] ) {
window.clearInterval( check_mountPoint_clearIcon );
BOOL_ok_clear = 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 > MAX_DYWidth ) {
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 > MAX_DYWidth ) {
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('');
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();
userInfo.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 : [],
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) );
}
// 根据 cookie 获取用户昵称
let cookies = document.cookie.split(/;\s/g);
for ( let i = 0; i < cookies.length; i++ ) {
let cookie = cookies[i];
let keyVal = cookie.split('=');
if ( keyVal && keyVal.length == 2 && keyVal[0] == 'acf_nickname' ) {
userInfo.nickName = keyVal[1];
break;
}
}
// 设置面板 ===============================================================
var div_setting = $h2p_j('');
// 标题 ===============================================================
var str_div_setting_label = (function(){/*
*/}).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(){/*
~
*/}).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(){/*
*/}).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(){/*
*/}).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(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
var div_auto_luckDrawBarrage = $h2p_j(str_div_auto_luckDrawBarrage);
// 隐藏选项 ===============================================================
var str_div_auto_hideOption = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
var div_auto_hideOption = $h2p_j(str_div_auto_hideOption);
// 是否自动领取鱼丸和参加火力全开 ===============================================================
var str_div_auto_receiveFishBall = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, '');
var div_auto_receiveFishBall = $h2p_j(str_div_auto_receiveFishBall);
// 分隔线 ===============================================================
var hr_style = '
';
// 添加所有设置按钮
$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_ok_config = 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_ok_config && BOOL_ok_sendBar ) {
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++ ) {
if ( keyReplys[i] ) {
let select_keyReply = $h2p_j('select#select-keyReply');
let keyReply = keyReplys[i];
$h2p_j(select_keyReply).append( $h2p_j('') )
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_ok_config && BOOL_ok_clear ) {
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_ok_config && 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 ( $h2p_j('div#div-sendBarrage').length > 0 && $h2p_j('div.BarrageSuperLink').length > 0 ) {
let div_sign = $h2p_j('');
let btn_sign = $h2p_j('🐯');
$h2p_j(btn_sign).click(function(){ $h2p_j('div#div-DYScript').toggle(); });
$h2p_j(div_sign).append(btn_sign);
$h2p_j('div.ChatToolBar').append( div_sign );
window.clearInterval( check_mountPoint_DYScriptIcon );
}
}, 1000);
$h2p_j(div_DYScript).append(div_DYScriptTab);
})();