// ==UserScript== // @name 斗鱼自动发弹幕 // @namespace http://tampermonkey.net/ // @version 0.4.0 // @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 改写,还没改完;更新了弹幕抽奖元素获取(因为斗鱼改了);增加设置抽奖弹幕次数;发送弹幕时可以修改循环弹幕 // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Your code here... var interval_autoSendBarrage = undefined; // 自动发弹幕 var interval_countDownOfBarrage = undefined; // 弹幕倒计时 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_input = '#f5f5f5'; var color_input_disabled = '#DCDCDC'; var fontSize_input = '12px'; var input_checkBok_left_style = { 'position' : 'absolute', 'top' : '0', 'bottom' : '0', 'left' : '0', 'margin' : 'auto', }; var initView = function(){ var div_sendBarrage = document.createElement('div'); $(div_sendBarrage).attr('id', 'div-sendBarrage'); $(div_sendBarrage).css({ 'position' : 'absolute', 'bottom' : '1px', 'min-width' : '315px', 'max-width' : '315px', 'padding' : '10px', 'border' : '1px solid #DCDCDC', 'borderRadius' : '2px', 'margin' : '0 0 0 -1px', 'boxShadow' : '#A9A9A9 5px 0 10px 0', 'fontSize' : '14px', 'backgroundColor': color_input_input, 'display' : 'none', 'z-index' : '999', }); // 发送弹幕的速度 =============================================================== var div_first = document.createElement('div'); $(div_first).css({ 'position' : 'relative', 'width' : '100%', 'height' : '24px', 'verticalAlign' : 'center', }); var div_speed = document.createElement('div'); $(div_speed).css({ 'position' : 'absolute', 'width' : '50%', 'height' : '24px', }); var label_speed = document.createElement('label'); label_speed.innerHTML = '间隔:'; $(div_speed).append(label_speed); var input_speed = document.createElement('input'); $(input_speed).attr('id', 'input-sendBarrage-speed'); $(input_speed).css({ 'width' : '65px', 'height' : '22px', 'padding' : '0 3px', 'border' : '1px solid #708090', 'borderRadius' : '5px', 'margin' : '0 5px 0 0', 'fontSize' : fontSize_input, 'background' : color_input_input }); $(input_speed).attr('placeholder', '默认 5'); input_speed.onblur = input_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; } $(div_speed).append(input_speed); var label_unit = document.createElement('label'); $(label_unit).css({ 'height' : '22px', }); $(label_unit).text('秒'); $(div_speed).append(label_unit); $(div_first).append(div_speed); // 发送弹幕倒计时 var div_countDown = document.createElement('div'); $(div_countDown).css({ 'position' : 'absolute', 'left' : '50%', 'height' : '24px', 'color' : '#228B22', }); var label_countDown = document.createElement('label'); $(label_countDown).css({ 'min-width' : '106px', 'max-width' : '106px', 'margin' : '0', }); $(label_countDown).text('弹幕倒计:'); $(div_countDown).append(label_countDown); var input_numOfCountDown = document.createElement('input'); $(input_numOfCountDown).attr('id', 'input-countDown'); $(input_numOfCountDown).css({ 'width' : '77px', 'height' : '22px', 'padding' : '0 3px', 'border' : '1px solid #708090', 'borderRadius' : '5px', 'fontSize' : fontSize_input, 'background' : color_input_disabled, }); $(input_numOfCountDown).attr('disabled', true); $(div_countDown).append(input_numOfCountDown); $(div_first).append(div_countDown); // 是否发送默认弹幕 =============================================================== var div_defaultBarrage = document.createElement('div'); $(div_defaultBarrage).css({ 'position' : 'relative', 'margin' : '0', }); var input_defaultBarrage = $(''); $(input_defaultBarrage).attr('id', 'input-isDefaultBarrage'); $(input_defaultBarrage).css(input_checkBok_left_style); $(div_defaultBarrage).append(input_defaultBarrage); var label_defaultBarrage = document.createElement('label'); $(label_defaultBarrage).css({ 'margin' : '0 0 0 20px', }); label_defaultBarrage.innerHTML = '发送默认弹幕'; $(div_defaultBarrage).append(label_defaultBarrage); // 是否发送循环弹幕 =============================================================== var div_barrage = document.createElement('div'); $(div_barrage).css({ 'position' : 'relative', 'margin' : '0', }); var input_isLoop = $(''); $(input_isLoop).attr('id', 'input-isLoop'); $(input_isLoop).css(input_checkBok_left_style); $(div_barrage).append(input_isLoop); var input_barrage = document.createElement('textarea'); $(input_barrage).attr('id', 'input-sendBarrage-content'); $(input_barrage).css({ 'min-width' : '286px', 'max-width' : '286px', 'min-height' : '90px', 'max-height' : '90px', 'padding' : '3px', 'border' : '1px solid #708090', 'borderRadius' : '5px', 'margin' : '0 0 0 20px', 'fontSize' : fontSize_input, 'background' : color_input_input, }); input_barrage.placeholder = '循环弹幕'; $(div_barrage).append(input_barrage); // 是否参加弹幕抽奖 =============================================================== var div_luckDraw = document.createElement('div'); $(div_luckDraw).css({ 'position' : 'relative', 'width' : '100%', 'height' : '24px', 'verticalAlign' : 'center', }); var div_isLuckDraw = document.createElement('div'); $(div_isLuckDraw).css({ 'position' : 'absolute', 'width' : '50%', 'height' : '24px', }); var input_luckDraw = $(''); $(input_luckDraw).attr('id', 'input-isLuckDraw'); $(input_luckDraw).css(input_checkBok_left_style); $(div_isLuckDraw).append(input_luckDraw); var label_luckDraw = document.createElement('label'); $(label_luckDraw).css({ 'margin' : '0 0 0 20px', }); label_luckDraw.innerHTML = '参与抽奖弹幕'; $(div_isLuckDraw).append(label_luckDraw); var input_luckDrawHide = document.createElement('input'); $(input_luckDrawHide).css({ 'width' : '1px', 'height' : '22px', 'padding' : '0 3px', 'border' : '1px solid #708090', 'borderRadius' : '5px', 'margin' : '0 5px 0 0', 'fontSize' : fontSize_input, 'visibility' : 'hidden', }); $(div_isLuckDraw).append(input_luckDrawHide); $(div_luckDraw).append(div_isLuckDraw); // 抽奖弹幕发送次数 var div_luckDrawCount = document.createElement('div'); $(div_luckDrawCount).css({ 'position' : 'absolute', 'left' : '50%', 'height' : '24px', 'color' : '#228B22', }); var label_luckDrawCount = document.createElement('label'); $(label_luckDrawCount).css({ 'min-width' : '106px', 'max-width' : '106px', 'margin' : '0', }); $(label_luckDrawCount).text('抽奖发送:'); $(div_luckDrawCount).append(label_luckDrawCount); var input_luckDrawCount = document.createElement('input'); $(input_luckDrawCount).attr('id', 'input-luckDrawCount'); $(input_luckDrawCount).css({ 'width' : '57px', 'height' : '22px', 'padding' : '0 3px', 'border' : '1px solid #708090', 'borderRadius' : '5px', 'margin' : '0 5px 0 0', 'fontSize' : fontSize_input, 'background' : color_input_input, }); $(input_luckDrawCount).attr('placeholder', '默认 5'); input_luckDrawCount.onblur = input_luckDrawCount.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; } $(div_luckDrawCount).append(input_luckDrawCount); var label_luckDrawUnit = document.createElement('label'); $(label_luckDrawUnit).text('次'); $(div_luckDrawCount).append(label_luckDrawUnit); $(div_luckDraw).append(div_luckDrawCount); // 弹幕发送按钮 =============================================================== var div_sendBtn = document.createElement('div'); $(div_sendBtn).css({ 'position' : 'relative', 'margin' : '0', }); var btn_send = document.createElement('button'); $(btn_send).attr('id', 'btn-send'); btn_send.innerHTML = '发送'; $(btn_send).css({ 'width' : '293px', 'height' : '100%', 'padding' : '4px 0', 'border' : 'none', 'borderRadius' : '5px', 'margin' : '0 0 0 20px', 'fontSize' : fontSize_input, 'background' : '#00ddbb', 'cursor' : 'pointer', }); btn_send.onclick = function(){ clearInterval_barrageCountDown(); if( interval_autoSendBarrage == undefined ){ setInterval_autoSendBarrage(); setInterval_barrageCountDown(); } else { clearInterval_autoSendBarrage(); } } btn_send.onmouseover = function(){ this.style.background = '#00d1b2'; } btn_send.onmouseout = function(){ this.style.background = '#00ddbb'; } $(div_sendBtn).append(btn_send); // hr =============================================================== var hr_style = '