Greasy Fork

Greasy Fork is available in English.

bilibili关灯

bilibili关灯(把被新版B站藏起来的关灯按钮揪出来,在关闭弹幕按钮左边,还可以用快捷键,默认'A')

当前为 2021-05-29 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         bilibili关灯
// @namespace    hhh2000
// @version      0.3
// @description  bilibili关灯(把被新版B站藏起来的关灯按钮揪出来,在关闭弹幕按钮左边,还可以用快捷键,默认'A')
// @author       hhh2000
// @include      *://*.bilibili.com/video/*
// @include      *://*.bilibili.tv/video/*
// @include      *://*.bilibili.com/bangumi/*
// @include      *://*.bilibili.tv/bangumi/*
// @require      https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// @run-at       document-end
// @grant        none
// ==/UserScript==

function waitForNode(nodeSelector, callback) {
    var node = nodeSelector();
    if (node) {
        callback(node);
    } else {
        setTimeout(function() { waitForNode(nodeSelector, callback); }, 100);
    }
}

function waitForTrue(ifTrue, callback) {
    if (ifTrue()) {
        callback();
    } else {
        setTimeout(function() { waitForTrue(ifTrue, callback); }, 10);
    }
}

function isFullScreen() {
    return $('#bilibiliPlayer').hasClass('mode-fullscreen');
}

function abc(e) {console.log(e)};

//关灯按钮样式
function lightoff_css() {
    var body_brgb = 'rgb(160, 130, 110)';
    var dot_crgb = 'rgb(230, 200, 180)';
    var dot_brgb = 'rgb(50, 50, 50)';
    var dark_rgb = 'rgb(77, 77, 77)';
    if ($('.bilibili-player-video-danmaku-switch>.bui-switch-input')[0].checked === false) {
        $('.bilibili-player-video-danmaku-switch .bui-switch-body:first').css('background-color', dark_rgb);
        $('.bilibili-player-video-danmaku-switch .bui-switch-body:first>.bui-switch-dot').css('color', dark_rgb);
    }
    else {
        $('.bilibili-player-video-danmaku-switch .bui-switch-body:first').css('background-color', body_brgb);
        $('.bilibili-player-video-danmaku-switch .bui-switch-body:first>.bui-switch-dot').css({'color': dot_crgb, 'background-color': dot_brgb});
    }
}

function run(){
    waitForNode(() => document.querySelector('.bilibili-player-video-danmaku-switch .bui-switch-dot'),
                (node) => {

        //防止重复加载
        if ($('.bilibili-player-video-danmaku-switch .bui-switch-dot').length !== 1) return;

        //插入关灯按钮
        $("div.bilibili-player-video-danmaku-switch:first").clone().prependTo("div.bilibili-player-video-danmaku-root:first");
        $('span.bui-switch-body>.bui-switch-dot:first>span').remove();
        $('span.bui-switch-body>.bui-switch-dot:first')[0].innerHTML = '灯';

        //点击关灯
        $('.bilibili-player-video-danmaku-switch>.bui-switch-input:first').click(function(){
            $('.bilibili-player-video-btn-setting-right-others-content-lightoff>input').click();
            lightoff_css();
        });

        //键盘关灯
        $(document).off('keydown.lightoff');
        $(document).on('keydown.lightoff',function(e){
            if(e.keyCode === 'A'.charCodeAt()){  //开关灯
                $('.bilibili-player-video-btn-setting-right-others-content-lightoff>input').click();
                //实际点击按钮和调用点击事件bui-switch-input')[0].checked值不同,需要下面这句
                $('.bilibili-player-video-danmaku-switch>.bui-switch-input')[0].checked = !$('.bilibili-player-video-danmaku-switch>.bui-switch-input')[0].checked;
                lightoff_css();
            } else if(e.keyCode === 'W'.charCodeAt()) {  //网页全屏
                $('.bilibili-player-video-web-fullscreen').click();
            } else if(e.keyCode === 'Q'.charCodeAt()) {  //宽屏模式
                isFullScreen() ? $('.bilibili-player-video-btn-fullscreen').click() : $('.bilibili-player-video-btn-widescreen').click();
            } else if(e.keyCode === 'D'.charCodeAt()) {  //开关弹幕
                $('.bilibili-player-video-danmaku-switch>.bui-switch-input:last').click();
            } else if(e.keyCode === 'T'.charCodeAt()) {  //开关顶端弹幕
                $('.bilibili-player-block-filter-type[ftype=top]').click();
            } else if(e.keyCode === 'B'.charCodeAt()) {  //开关底端弹幕
                $('.bilibili-player-block-filter-type[ftype=bottom]').click();
            }
        });

        //初始化关灯按钮
        lightoff_css();

        //激活系统弹幕设置class
        $('.bilibili-player-video-danmaku-setting').mouseenter().mouseout();

        //激活系统关灯class,去掉mouseout(),否则如果太快执行mouseout()无法激活关灯class
        $('.bilibili-player-video-btn.bilibili-player-video-btn-setting').mouseenter();

        //解决因为激活关灯class,导致全屏时滚轮无法调节音量的问题
        waitForTrue(()=>$('.bilibili-player-video-btn-setting-wrap').css('display') === 'block',
                    () => {
            $('.bilibili-player-video-btn-setting-wrap').css('display', 'none');
        });

    });
}

function init() {
    //内部加载视频窗口
    waitForNode(() => document.querySelector('video'),
        (node) => {
        var oV = document.getElementsByTagName("video")[0];
        oV.addEventListener('DOMNodeInserted', () => {
            run();
        });
    });

    run();
}

window.onload = init();