B站多倍速播放

B站内置多倍速播放

当前为 2022-04-09 提交的版本,查看 最新版本

// ==UserScript==
// @name         B站多倍速播放
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  B站内置多倍速播放
// @author       Candy.
// @match        https://www.bilibili.com/video/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license MIT
// ==/UserScript==

window.isDOMLoaded = false;
window.isDOMRendered = false;

document.addEventListener('readystatechange', function () {
    if (document.readyState === "interactive" || document.readyState === "complete") {
        window.isDOMLoaded = true;
    }
});

(function() {
    'use strict';
    function processClass(parent, cur) {
      for (let ele of parent.children) {
        ele.className = "bilibili-player-video-btn-speed-menu-list"
      }
      cur.className = "bilibili-player-video-btn-speed-menu-list bilibili-player-active"
    }


    function sleep(time) {
      return new Promise(resolve => {
        setTimeout(resolve, time)
      })
    }

    function insertLi(videoEle, speedUl, btn, rate) {
      var speedLi = document.createElement("li")
      speedLi.dataset.value = rate
      speedLi.className = "bilibili-player-video-btn-speed-menu-list"
      speedLi.innerHTML = rate + 'x'
      speedLi.addEventListener('click', function (e) {
        processClass(speedUl, speedLi)
        videoEle.playbackRate = rate
        e.stopPropagation()
      })
      speedUl.addEventListener('click', function (e) {
        if (speedLi.className !== "bilibili-player-video-btn-speed-menu-list") {
          speedLi.className = "bilibili-player-video-btn-speed-menu-list"
        }
      })
      speedUl.prepend(speedLi)
      console.log('done')
    }


    sleep(5000).then(
      () => {
        var videoEle = document.getElementsByTagName("video")[0]
        var speedUl = document.getElementsByClassName('bilibili-player-video-btn-speed-menu')[0]
        var btn = document.getElementsByClassName('bilibili-player-video-btn-speed-name')[0]
        console.log(speedUl)
        insertLi(videoEle, speedUl, btn, 2.5)
        insertLi(videoEle, speedUl, btn, 3)
        insertLi(videoEle, speedUl, btn, 5)
      }
    )
    // Your code here...
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址