Live Danmaku Controller

Auto turn off live danmaku.

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

// ==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()
)