// ==UserScript== // @name 斗鱼自动发弹幕、领取观看鱼丸、清爽模式 // @namespace http://tampermonkey.net/ // @version 0.6.4 // @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.3.24-V0.6.4 完善清爽模式退出 // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; var $h2p_j = jQuery.noConflict(); var h2p_DYScript_settingUpdate_version = '0.6.4'; 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 = 5; // 弹幕发送默认间隔时间 var luckDrawCountDown = 0; // 弹幕抽奖活动倒计时 var barrageCountDown = 0; // 弹幕倒计时 var barrageLuckDraw = ''; // 抽奖弹幕内容 var count_luckDraw = 0; // 抽奖弹幕实际发送次数 var count_luckDrawTotal = 0; // 抽奖弹幕总共发送次数 var count_luckDrawDefault = 5; // 抽奖弹幕默认发送次数 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 : 315px; max-width : 315px; padding : 10px; border : 1px solid #DCDCDC; border-radius : 2px; margin : 0 0 0 -1px; box-shadow : #A9A9A9 5px 0 10px 0; font-family : WeibeiSC-Bold, STKaiti; font-size : 16px; background : #f5f5f5; display : none; z-index : 999; } .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 : absolute; 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-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 initView_barrage = function(){ // 整个面板 =============================================================== var div_sendBarrage = $h2p_j('
'); // 发送弹幕的速度 and 倒计时 =============================================================== var str_div_speed_and_countDown = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); var div_speed_and_countDown = $h2p_j(str_div_speed_and_countDown); // 是否发送默认弹幕 =============================================================== var str_div_defaultBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); var div_defaultBarrage = $h2p_j(str_div_defaultBarrage); // 是否发送循环弹幕 =============================================================== var str_div_loopBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); var div_loopBarrage = $h2p_j(str_div_loopBarrage); // 是否发送抄袭弹幕 =============================================================== var str_div_copyBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); var div_copyBarrage = $h2p_j(str_div_copyBarrage); // 是否参加弹幕抽奖 =============================================================== 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( 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 = '
'; // 添加所有元素 =============================================================== $h2p_j(div_sendBarrage).append(div_speed_and_countDown); $h2p_j(div_sendBarrage).append($h2p_j(hr_style)); $h2p_j(div_sendBarrage).append(div_defaultBarrage); $h2p_j(div_sendBarrage).append($h2p_j(hr_style)); $h2p_j(div_sendBarrage).append(div_loopBarrage); $h2p_j(div_sendBarrage).append($h2p_j(hr_style)); $h2p_j(div_sendBarrage).append(div_copyBarrage); $h2p_j(div_sendBarrage).append($h2p_j(hr_style)); $h2p_j(div_sendBarrage).append(div_luckDrawBarrage); $h2p_j(div_sendBarrage).append($h2p_j(hr_style)); $h2p_j(div_sendBarrage).append(div_barrageSendBtn); // 检查弹幕面板挂载点(斗鱼弹幕显示区域)是否加载完成 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_sendBarrage ); }, 3000); window.clearInterval( check_mountPoint_barragePanel ); } }, 1000); // 检查弹幕图标挂载点(斗鱼弹幕输入框)是否加载完成 var check_mountPoint_barrageIcon = setInterval( function(){ if( document.getElementById('div-sendBarrage') && document.getElementsByClassName('ChatToolBar')[0] ){ let div_sign = $h2p_j('
'); let btn_sign = $h2p_j('📢'); $h2p_j(btn_sign).click(function(){ $h2p_j('div#div-sendBarrage').toggle(); $h2p_j('div#div-DYLight').hide(); $h2p_j('div#div-setting').hide(); }); $h2p_j(div_sign).append(btn_sign); $h2p_j( $h2p_j('div.ChatToolBar')[0] ).append( div_sign ); window.clearInterval( check_mountPoint_barrageIcon ); bool_barrageReady = true; // 发送弹幕速度输入框事件 let input_sendBarrage_speed = document.getElementById('input-sendBarrage-speed'); input_sendBarrage_speed.onblur = input_sendBarrage_speed.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 > 3 ){ value = value.substr(0, 3); } this.value = value; } // 发送抽奖弹幕次数输入框事件 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(){ 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-isCopyBarrage') && document.getElementById('input-isCopyBarrage').checked ){ if( document.getElementsByClassName('Barrage-content') ){ let barrages = document.getElementsByClassName('Barrage-content'); barrage = barrages[barrages.length-1].textContent; } } // 循环发送自定义弹幕 if( ( barrage == undefined || barrage.length == 0 ) && document.getElementById('input-isLoopBarrage') && document.getElementById('input-isLoopBarrage').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-isDefaultBarrage') && document.getElementById('input-isDefaultBarrage').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(); } } function setInterval_autoSendBarrage(){ var input_speed = document.getElementById('input-sendBarrage-speed'); interval = parseInt( input_speed.value ) >= 2 ? parseInt( input_speed.value ) : interval_default; $h2p_j(input_speed).attr('disabled', true); $h2p_j(input_speed).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('#button-sign').text('🔥'); interval_autoSendBarrage = setInterval(sendBarrage, interval * 1000); } function clearInterval_autoSendBarrage(){ window.clearInterval(interval_autoSendBarrage); interval_autoSendBarrage = undefined; var input_speed = document.getElementById('input-sendBarrage-speed'); $h2p_j(input_speed).attr('disabled', false); $h2p_j(input_speed).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('#button-sign').text('📢'); } function showBarrageCountDown(){ if( barrageCountDown <= 0 ){ barrageCountDown = interval; } $h2p_j('#input-countDown').val(--barrageCountDown); } function setInterval_barrageCountDown(){ barrageCountDown = interval; interval_countDownOfBarrage = setInterval(showBarrageCountDown, 1000); } 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('
'); 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 = '
'; // 添加所有清爽按钮 $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)); // 隐藏全部返回键 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_clearPanel = setInterval( function(){ if( $h2p_j('div.layout-Player-asideMainTop')[0] ){ setTimeout( function(){ $h2p_j( $h2p_j('div.layout-Player-asideMainTop')[0] ).append(div_DYLight); }, 3000); window.clearInterval( check_mountPoint_clearPanel ); } }, 1000); var check_mountPoint_clearIcon = setInterval( function(){ if( document.getElementById('div-DYLight') && document.getElementsByClassName('ChatToolBar')[0] ){ $h2p_j('div.Horn4Category').hide(); $h2p_j('div.ChatNobleBarrage').hide(); $h2p_j('div.BarrageSuperLink').hide(); let div_sign = $h2p_j('
'); let btn_sign = document.createElement('span'); $h2p_j(btn_sign).attr('class', 'h2p-span-sign'); $h2p_j(btn_sign).text('✡️'); btn_sign.onclick = function(){ $h2p_j('div#div-sendBarrage').hide(); $h2p_j('div#div-DYLight').toggle(); $h2p_j('div#div-setting').hide(); }; $h2p_j(div_sign).append(btn_sign); $h2p_j( $h2p_j('div.ChatToolBar')[0] ).append(div_sign); 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(){ var interval_autoReceiveFishBall = setInterval(function(){ // 观看鱼丸元素存在并且有未领取的鱼丸 if( document.getElementsByClassName('RewardModule-countdown') && document.getElementsByClassName('RewardModule-notify')[0] ){ // 获得未领取的次数 var timeOfYuwan = document.getElementsByClassName('RewardModule-notify')[0].textContent; if( ( timeOfYuwan != undefined && parseInt(timeOfYuwan) > 0 ) || document.getElementsByClassName('RewardModule-countdown')[0].textContent == '领 取' ){ document.getElementsByClassName('RewardModule-countdown')[0].click(); for( let i = 1; i <= parseInt(timeOfYuwan); i++ ){ setTimeout(function(){ try{ document.getElementsByClassName('RewardM-text enable')[0].click(); }catch(err){ document.getElementsByClassName('RewardModal-close')[0].click(); window.clearInterval(interval_autoReceiveFishBall); interval_autoReceiveFishBall == undefined; } if( interval_autoReceiveFishBall && i == parseInt(timeOfYuwan) ){ setTimeout(function(){ if( document.getElementsByClassName('RewardM-result').length == 4 ){ window.clearInterval(interval_autoReceiveFishBall); console.log('所有观看鱼丸领完'); } document.getElementsByClassName('RewardModal-close')[0].click(); }, 200) } }, i * 100); } } } }, 5000); } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // // 斗鱼功能自动化启动设置 var h2p_DYScript_setting = {}; var h2p_DYScript_setting_default = { defaultBarrage : false, speed : 5, loopBarrage : false, loopBarrageContext : '', copyBarrage : false, luckDrawBarrage : false, hidePart : false, hideAll : false, receiveFishBall : false, version : '', }; var initView_setting = function(){ try{ // 获取本地用户配置 let settingValue = localStorage.getItem('h2p-DYScript-setting'); h2p_DYScript_setting = settingValue ? JSON.parse(settingValue) : h2p_DYScript_setting_default; }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) ); } if( h2p_DYScript_setting.version != h2p_DYScript_settingUpdate_version ){ let settingValue = JSON.parse( localStorage.getItem('h2p-DYScript-setting') ); for( let attr in settingValue ){ if( !(attr in h2p_DYScript_setting) ){ h2p_DYScript_setting[attr] = settingValue[attr]; } } h2p_DYScript_setting.version = h2p_DYScript_settingUpdate_version; localStorage.setItem('h2p-DYScript-setting', JSON.stringify(h2p_DYScript_setting) ); } // 整个面板 =============================================================== var div_setting = $h2p_j('
'); // 是否自动发送默认弹幕 =============================================================== var str_div_auto_defaultBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); var div_auto_defaultBarrage = $h2p_j(str_div_auto_defaultBarrage); // 是否自动发送循环弹幕 =============================================================== var str_div_auto_loopBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); var div_auto_loopBarrage = $h2p_j(str_div_auto_loopBarrage); // 是否自动发送抄袭弹幕 =============================================================== var str_div_auto_copyBarrage = (function(){/*
*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); var div_auto_copyBarrage = $h2p_j(str_div_auto_copyBarrage); // 是否自动发送抽奖弹幕 =============================================================== 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($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_setting).append($h2p_j(hr_style)); // 检查设置面板挂载点(斗鱼弹幕显示区域)是否加载完成 var check_mountPoint_settingPanel = setInterval( function(){ if( $h2p_j('div.layout-Player-asideMainTop')[0] ){ setTimeout( function(){ $h2p_j( $h2p_j('div.layout-Player-asideMainTop')[0] ).append(div_setting); }, 3000); window.clearInterval( check_mountPoint_settingPanel ); } }, 1000); var check_mountPoint_settingIcon = setInterval( function(){ if( document.getElementById('div-setting') && document.getElementsByClassName('ChatToolBar')[0] ){ let div_sign = $h2p_j('
'); let btn_sign = document.createElement('span'); $h2p_j(btn_sign).attr('class', 'h2p-span-sign'); $h2p_j(btn_sign).text('⏲️'); btn_sign.onclick = function(){ $h2p_j('div#div-sendBarrage').hide(); $h2p_j('div#div-DYLight').hide(); $h2p_j('div#div-setting').toggle(); }; $h2p_j(div_sign).append(btn_sign); $h2p_j( $h2p_j('div.ChatToolBar')[0] ).append(div_sign); 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; if( document.getElementById('input-loopBarrage-content').value.length > 0 ){ h2p_DYScript_setting.loopBarrageContext = document.getElementById('input-loopBarrage-content').value; } 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_speed = document.getElementById('input-auto-sendBarrage-speed'); input_auto_speed.onblur = input_auto_speed.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 > 3 ){ value = value.substr(0, 3); } this.value = value; h2p_DYScript_setting.speed = parseInt(value) ? parseInt(value) : 5; 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-speed').value = h2p_DYScript_setting.speed; if( h2p_DYScript_setting.defaultBarrage ){ document.getElementById('input-isDefaultBarrage').checked = true; document.getElementById('input-auto-defaultBarrage').checked = true; console.log('启动:自动发送默认弹幕'); auto_send = true; } if( h2p_DYScript_setting.loopBarrage ){ document.getElementById('input-isLoopBarrage').checked = true; document.getElementById('input-loopBarrage-content').value = h2p_DYScript_setting.loopBarrageContext; 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('input-sendBarrage-speed').value = h2p_DYScript_setting.speed; interval = h2p_DYScript_setting.speed; 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); })(); })();