// ==UserScript== // @name Live Danmaku Controller // @name:en-US Live Danmaku Controller // @name:zh-CN 直播弹幕控制 // @description Auto turn off live danmaku // @description:en-US Auto turn off live danmaku // @description:zh-CN 自动关闭直播弹幕 // @namespace live-danmaku-controller // @version 2020.07.28.1 // @author Akatsuki // @license MIT License // @grant GM_info // @run-at document-idle // @match *://live.bilibili.com/* // @match *://www.douyu.com/* // @match *://www.huya.com/* // @match *://www.yy.com/* // @downloadURL none // ==/UserScript== "use strict"; const selector = { "live.bilibili.com": { on: "i[class='live-icon-danmaku-on']", off: "i[class='live-icon-danmaku-off']", }, "www.douyu.com": { on: "div[class^='showdanmu-']:not([class*='removed-'])", off: "div[class^='hidedanmu-']:not([class*='removed-'])", }, "www.huya.com": { on: "div[class='danmu-show-btn'][title='关闭弹幕']", off: "div[class='danmu-show-btn danmu-hide-btn'][title='开启弹幕']", }, "www.yy.com": { on: "div[class~='yc__bullet-comments-btn'][title='关闭弹幕']", off: "div[class~='yc__bullet-comments-btn'][title='打开弹幕']", }, }; const delaySite = ["www.yy.com"]; let liveSite = document.location.hostname; // Danmaku disabler function disableDanmaku() { let buttonOn = document.querySelector(selector[liveSite].on); if (buttonOn !== null) { buttonOn.click(); } setTimeout(() => { if (document.querySelector(selector[liveSite].off) === null) { disableDanmaku(); } }, 500); } // Delay danmaku disabler for some sites (Delay 10s) // Fix the button is showing as OFF, but danmaku still appear if (delaySite.includes(liveSite)) { setTimeout(disableDanmaku, 10000); } else { disableDanmaku(); }