bilibili播放视频倍速自定义,可记忆

bilibili播放视频倍速自定义,刷新浏览器也不会丢失之前设置的速度

目前為 2019-08-20 提交的版本,檢視 最新版本

// ==UserScript==
// @name         bilibili播放视频倍速自定义,可记忆
// @namespace    EsfB2XVPmbThEv39bdxQR2hzid30iMF9
// @version      0.7
// @description  bilibili播放视频倍速自定义,刷新浏览器也不会丢失之前设置的速度
// @author       tomoya
// @include      http*://*bilibili.com/video/*
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  let videoSpeedElement;

  let style = document.createElement('style');
  style.type = 'text/css';
  style.innerHTML = "#video_speed_div button { outline: 0; padding: 3px 5px; margin-left: 10px; background-color: #e2e0e0; border: 0; color: #222; cursor: pointer;} .video_speed_div-button-active { border: 0!important; background-color: #ffafc9!important; color: #fff!important; }";
  document.getElementsByTagName('head').item(0).appendChild(style);

  let _interval = setInterval(function () {
    if (document.querySelector(".bb-comment") && document.getElementById("video_speed_div") === null) {
      addSpeedBtns();
    }
  }, 100);

  function addSpeedBtns() {
    videoSpeedElement = document.createElement("div");
    videoSpeedElement.setAttribute("id", "video_speed_div");

    let speedArr = [0.5, 1, 1.5, 2, 2.5, 3, 4, 5];

    for (let i = 0; i < speedArr.length; i++) {
      let speed = speedArr[i];
      let btn = document.createElement("button");
      btn.innerHTML = "x" + speed;
      btn.style.width = "40px";
      btn.setAttribute("id", "third_video_plugin_btn_" + speed);
      btn.addEventListener("click", changeVideoSpeed);
      videoSpeedElement.appendChild(btn);
    }

    videoSpeedElement.style.width = "100%";
    videoSpeedElement.style.height = "30px";

    document.querySelector("#viewbox_report").querySelector(".video-data:last-child").appendChild(videoSpeedElement);

    clearInterval(_interval);

    // 加载之间已经设置的速度, 在同一个页面中切换视频后,设置的速度就没了,这里用一个定时器,200ms设置一下
    setInterval(function () {
      let third_video_plugin_speed = localStorage.getItem("third_video_plugin_speed");
      if (!third_video_plugin_speed) third_video_plugin_speed = '1';
      for (let i = 0; i < videoSpeedElement.childNodes.length; i++) {
        let btn = videoSpeedElement.childNodes[i];
        if (btn.getAttribute("id") === "third_video_plugin_btn_" + third_video_plugin_speed) {
          btn.click();
        }
      }
      document.getElementById("third_video_plugin_btn_" + third_video_plugin_speed).click();
    }, 200);
  }

  function changeVideoSpeed(e) {
    let speed = parseFloat(e.target.innerHTML.replace("x", ""));
    localStorage.setItem("third_video_plugin_speed", speed);
    document.querySelector("video:first-child").playbackRate = speed;
    for (let i = 0; i < videoSpeedElement.childNodes.length; i++) {
      let btn = videoSpeedElement.childNodes[i];
      btn.setAttribute("class", "");
    }
    e.target.setAttribute("class", "video_speed_div-button-active");
  }

})();

QingJ © 2025

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