Live Danmaku Controller

Auto turn off live danmaku.

As of 2020-07-27. See the latest version.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==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.27.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/*
// ==/UserScript==

'use strict'

var 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='打开弹幕']"
    }
}

var delay_site = [
    'www.yy.com'
]

var live_site = document.location.hostname

// Danmaku disabler.
function disable_danmaku() {
    var button_on = document.querySelector(selector[live_site].on)
    if (button_on !== null) {
        button_on.click()
    }
    setTimeout(() => {
        if (document.querySelector(selector[live_site].off) === null) {
            disable_danmaku()
        }
    }, 500)
}

// Delay danmaku disabler for some sites. (delay 10s)
// To fix the button showing as OFF, but danmaku still appear.
if (delay_site.includes(live_site)) {
    setTimeout(disable_danmaku, 10000)
} else (
    disable_danmaku()
)