您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
增加bilibili播放器的快捷按键,优化个别视图。
当前为
// ==UserScript== // @name bilibili优化 // @namespace binger.cc // @version 1.1 // @description 增加bilibili播放器的快捷按键,优化个别视图。 // @author Ervoconite // @match https://*.bilibili.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=bilibili.com // @grant none // ==/UserScript== const autoWide = true; // 自动宽屏 const d = document; const _Log = console.log; const qs = (sel) => { return d.querySelector(sel) } const ann = () => { return document.activeElement.nodeName } const favlistStyle = ` #page-fav .fav-main{width:800px!important} #page-fav .fav-main .small-item{width:170px!important} #page-fav .fav-main .small-item:nth-child(5n){margin-right:inherit!important} #page-fav .fav-main .fav-action-bottom .fav-action-fixtop{width:800px!important;} #page-fav .fav-sidenav{width:300px!important} #page-fav .fav-sidenav .text{line-height:33px!important;width:180px!important} #page-fav .fav-sidenav .fav-list-container{max-height:none!important} @media (min-width:1420px){ #page-fav .fav-main{width:980px} } /* #page-fav .fav-list>li:nth-child(odd){background:whitesmoke!important;} */ #page-fav .fav-sidenav > div:nth-child(2){background:aliceblue!important;} #page-fav .modal-wrapper .target-favlist{max-height:80vh!important;} #page-fav .modal-wrapper .target-favitem{height:unset!important;margin:.5em!important;} #page-fav .modal-wrapper .fav-meta{display:flex!important;} #page-fav .modal-wrapper .fav-meta .fav-state{margin-left:20px!important;} `; (function () { 'use strict'; // alert("debug"); /** * @description 个人空间——⭐收藏 视图调整 */ if (location.href.match(/space.bilibili.com/) && location.pathname.endsWith("favlist")) { qs("style").innerHTML += favlistStyle; setTimeout(() => { qs("#page-fav div.fav-sidenav > " + "div:nth-child(2) > div.favlist-title").click(); }, 1000); } /** * @description 视频播放器加快捷键 */ else if (location.href.match(/bilibili.com\/video/)) { const selControl = '#bilibili-player .bpx-player-video-area .bpx-player-control-wrap', selRate = `${selControl} .bpx-player-ctrl-playbackrate > ul`, selWebv = `${selControl} .bpx-player-ctrl-web`, selWide = `${selControl} .bpx-player-ctrl-wide`; const selToti = `#bilibili-player > div > div > div.bpx-player-tooltip-area`; /** obs: 用来给宽屏和页面全屏按钮加提示 */ const obs = new MutationObserver((mlist) => { if (mlist[3] && mlist[3].type == 'childList' && mlist[3].addedNodes.length) { var html; const wideTip = mlist[2].addedNodes[0].lastChild; const webvTip = mlist[3].addedNodes[0].lastChild; (html = wideTip.innerHTML, html == '宽屏模式' || html == '退出宽屏') ? wideTip.innerHTML += ' (h)' : _Log('h ERROR'); (html = webvTip.innerHTML, html == '网页全屏' || html == '退出网页全屏') ? webvTip.innerHTML += ' (g)' : _Log('g ERROR'); } }) /** 修改播放器的函数 */ function modifyPlayer(obs) { obs.disconnect(); const btnWebv = qs(selWebv), btnWide = qs(selWide), btnRate = qs(selRate), btnRates = Array.from(btnRate.children); const rateK2R = new Map([ ['1', '1'], ['2', '1.25'], ['3', '1.5'], ['4', '2'], ['5', '0.5'], ['6', '0.75'] ]), rateR2K = new Map(); rateK2R.forEach((r, k) => { rateR2K.set(r, k) }); const rate = (k) => { btnRates.find(e => { return e.dataset.value == rateK2R.get(k) }).click() } window.addEventListener('keyup', (e) => { if (['TEXTAREA', 'INPUT'].indexOf(ann()) > -1) return; // 输入时不反应。 var k = e.key; if (isNaN(k)) switch (k) { case 'g': btnWebv.click(); break; case 'h': btnWide.click(); break; default: } else { rate(k) } }); /** 给倍速备注按键 */ btnRate.style.cssText = 'text-align:end; width:100px; font-family:monospace;'; btnRates.map(e => { e.innerHTML += ` (按${rateR2K.get(e.dataset.value)}) ` }) if(autoWide) btnWide.click(); } new MutationObserver((mlist, muobs) => { if (mlist[0].type == 'childList' && qs(selWide)) { _Log('%c终于加载好了~',"color:lime"); /** 修改播放器 */ modifyPlayer(muobs); /** 启动提示监视器 */ obs.observe(qs(selToti), { childList: true }); } }).observe(d.body, { childList: true }); } })();