// ==UserScript== // @name bilibili关灯 // @namespace hhh2000 // @version 0.4 // @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 // @downloadURL 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); }, 100); } } 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().mouseleave(); //激活系统关灯class,以此激活调用系统关灯设置 //去掉mouseout(),否则如果太快执行mouseout()无法激活关灯class,应该是mouseenter()未执行完就被mouseout打断了 $('.bilibili-player-video-btn.bilibili-player-video-btn-setting').mouseenter(); //todo 避免显示激活页面 waitForNode(() => document.querySelector('.bilibili-player-video-btn-setting-wrap'), (node) => { $(node).css({"visibility":"hidden"}); //visible }) //解决因为激活关灯class,导致全屏时滚轮无法调节音量的问题 waitForTrue(()=>$('.bilibili-player-video-btn-setting-wrap').css('display') === 'block', () => { $('.bilibili-player-video-btn-setting-wrap').css('display', 'none').css('visibility', 'visible'); }); //todo ?? //$('.bilibili-player-video-btn.bilibili-player-video-btn-setting').on('mouseenter',function(){ //$('.bilibili-player-video-btn-setting-wrap').css({"visibility":"visible"}); //}) //// //$('.bilibili-player-video-danmaku-setting').mouseenter().mouseout(); //abc($('.bilibili-player-video-danmaku-setting-left-opacity-title .bui-thumb-tooltip').length); //$(document).on('keydown.aaa',function(e){ // if(e.keyCode === 'Z'.charCodeAt()){ //关灯 // abc($('.bilibili-player-video-danmaku-setting-left-opacity-title .bui-thumb-tooltip').length); // abc($('.bilibili-player-block-filter-type:first').click()); // abc($('.bilibili-player-setting-opacity.bui.bui-slider.bui-dark').mousedown()); // abc($('.bilibili-player-video-danmaku-setting-left-opacity-content').mousedown()); //} //}); }); } function init() { //内部加载视频窗口 waitForNode(() => document.querySelector('video'), (node) => { var oV = document.getElementsByTagName("video")[0]; oV.addEventListener('DOMNodeInserted', () => { run(); }); }); run(); } window.onload = init();