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

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

目前为 2019-08-06 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name bilibili播放视频倍速自定义,可记忆
  3. // @namespace EsfB2XVPmbThEv39bdxQR2hzid30iMF9
  4. // @version 0.3
  5. // @description bilibili播放视频倍速自定义,刷新浏览器也不会丢失之前设置的速度
  6. // @author tomoya
  7. // @include http*://*bilibili.com/video/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function () {
  12. 'use strict';
  13.  
  14. let style = document.createElement('style');
  15. style.type = 'text/css';
  16. 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: #00b5e5!important; color: #fff!important; }";
  17. document.getElementsByTagName('head').item(0).appendChild(style);
  18.  
  19. let videoSpeedElement = document.createElement("div");
  20. videoSpeedElement.setAttribute("id", "video_speed_div");
  21.  
  22. let btn1 = document.createElement("button");
  23. btn1.innerHTML = "x1";
  24. btn1.setAttribute("id", "third_video_plugin_btn_1");
  25. btn1.addEventListener("click", changeVideoSpeed);
  26.  
  27. let btn2 = document.createElement("button");
  28. btn2.innerHTML = "x2";
  29. btn2.setAttribute("id", "third_video_plugin_btn_2");
  30. btn2.addEventListener("click", changeVideoSpeed);
  31.  
  32. let btn2_5 = document.createElement("button");
  33. btn2_5.innerHTML = "x2.5";
  34. btn2_5.setAttribute("id", "third_video_plugin_btn_2.5");
  35. btn2_5.addEventListener("click", changeVideoSpeed);
  36.  
  37. let btn3 = document.createElement("button");
  38. btn3.innerHTML = "x3";
  39. btn3.setAttribute("id", "third_video_plugin_btn_3");
  40. btn3.addEventListener("click", changeVideoSpeed);
  41.  
  42. let btn3_5 = document.createElement("button");
  43. btn3_5.innerHTML = "x3.5";
  44. btn3_5.setAttribute("id", "third_video_plugin_btn_3.5");
  45. btn3_5.addEventListener("click", changeVideoSpeed);
  46.  
  47. let btn4 = document.createElement("button");
  48. btn4.innerHTML = "x4";
  49. btn4.setAttribute("id", "third_video_plugin_btn_4");
  50. btn4.addEventListener("click", changeVideoSpeed);
  51.  
  52. let btn4_5 = document.createElement("button");
  53. btn4_5.innerHTML = "x4.5";
  54. btn4_5.setAttribute("id", "third_video_plugin_btn_4.5");
  55. btn4_5.addEventListener("click", changeVideoSpeed);
  56.  
  57. let btn5 = document.createElement("button");
  58. btn5.innerHTML = "x5";
  59. btn5.setAttribute("id", "third_video_plugin_btn_5");
  60. btn5.addEventListener("click", changeVideoSpeed);
  61.  
  62. videoSpeedElement.appendChild(btn1);
  63. videoSpeedElement.appendChild(btn2);
  64. videoSpeedElement.appendChild(btn2_5);
  65. videoSpeedElement.appendChild(btn3);
  66. videoSpeedElement.appendChild(btn3_5);
  67. videoSpeedElement.appendChild(btn4);
  68. videoSpeedElement.appendChild(btn4_5);
  69. videoSpeedElement.appendChild(btn5);
  70.  
  71. let videoElement = document.querySelector("#playerWrap");
  72. let videoWidth = videoElement.clientWidth;
  73. let videoHeight = videoElement.clientHeight;
  74. let videoOffsetTop = videoElement.offsetTop;
  75. let videoOffsetLeft = videoElement.offsetLeft;
  76.  
  77. videoSpeedElement.style.textAlign = "right";
  78. videoSpeedElement.style.width = "300px";
  79. videoSpeedElement.style.height = "30px";
  80. videoSpeedElement.style.position = "fixed";
  81. videoSpeedElement.style.top = (videoOffsetTop - 30) + "px";
  82. videoSpeedElement.style.left = (videoOffsetLeft + videoWidth - 300) + "px";
  83.  
  84. let btns = videoSpeedElement.querySelector("button");
  85. for (let i = 0; i < btns.length; i++) {
  86. btns[i].style.paddingTop = "3px";
  87. btns[i].style.paddingBottom = "3px";
  88. btns[i].style.paddingLeft = "5px";
  89. btns[i].style.paddingRight = "5px";
  90. btns[i].style.marginLeft = "10px";
  91. }
  92.  
  93. document.body.appendChild(videoSpeedElement);
  94.  
  95. // 加载之间已经设置的速度
  96. let third_video_plugin_speed = localStorage.getItem("third_video_plugin_speed");
  97. if (third_video_plugin_speed) {
  98. for (let i = 0; i < videoSpeedElement.childNodes.length; i++) {
  99. let btn = videoSpeedElement.childNodes[i];
  100. if (btn.getAttribute("id") === "third_video_plugin_btn_" + third_video_plugin_speed) {
  101. btn.click();
  102. }
  103. }
  104. document.getElementById("third_video_plugin_btn_" + third_video_plugin_speed).click();
  105. }
  106.  
  107. function changeVideoSpeed(e) {
  108. let speed = parseFloat(e.target.innerHTML.replace("x", ""));
  109. let bilibili_player_settings = JSON.parse(sessionStorage.getItem("bilibili_player_settings"));
  110. let video_status = bilibili_player_settings.video_status;
  111. video_status.videospeed = speed;
  112. bilibili_player_settings.video_status = video_status;
  113. sessionStorage.setItem("bilibili_player_settings", JSON.stringify(bilibili_player_settings));
  114. localStorage.setItem("third_video_plugin_speed", speed);
  115. document.querySelector("video:first-child").playbackRate = speed;
  116. for (let i = 0; i < videoSpeedElement.childNodes.length; i++) {
  117. let btn = videoSpeedElement.childNodes[i];
  118. btn.setAttribute("class", "");
  119. }
  120. e.target.setAttribute("class", "video_speed_div-button-active");
  121. }
  122.  
  123. })();

QingJ © 2025

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