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

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

  1. // ==UserScript==
  2. // @name 西瓜视频播放倍速自定义,可记忆
  3. // @namespace 765aa98d40d84afdbda7d9d7e1bcd5fa
  4. // @version 0.5
  5. // @description 西瓜视频倍速自定义,刷新浏览器也不会丢失之前设置的速度
  6. // @author tomoya
  7. // @include http*://*ixigua.com/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function () {
  12. "use strict";
  13.  
  14. const STORAGE_NAME = "_third_plugin_player_speed_";
  15. const speeds = [0.5, 1, 1.5, 2, 2.5, 3, 4, 5];
  16.  
  17. let playerBlockDiv, videoDom, speedDiv;
  18.  
  19. let initTimer = setInterval(function () {
  20. playerBlockDiv = document.querySelector("#player_default");
  21. videoDom = document.querySelector("video");
  22. if (playerBlockDiv && videoDom) {
  23. speedDiv = document.createElement("div");
  24. speedDiv.style.display = "flex";
  25. speedDiv.style.paddingBottom = "5px";
  26. let speedItemDivs = [];
  27. for (let i = 0; i < speeds.length; i++) {
  28. let speedItemDiv = document.createElement("div");
  29. speedItemDiv.id = "speed_" + i;
  30. speedItemDiv.innerText = speeds[i];
  31. speedItemDiv.style.width = "32px";
  32. speedItemDiv.style.height = "32px";
  33. speedItemDiv.style.textAlign = "center";
  34. speedItemDiv.style.lineHeight = "32px";
  35. speedItemDiv.style.backgroundColor = "lightgray";
  36. speedItemDiv.style.marginRight = "5px";
  37. speedItemDiv.style.color = "white";
  38. speedItemDiv.style.cursor = "pointer";
  39. speedItemDiv.style.borderRadius = "5px";
  40. speedItemDiv.addEventListener("click", function (e) {
  41. for (let j = 0; j < speedItemDivs.length; j++) {
  42. speedItemDivs[j].style.backgroundColor = "lightgray";
  43. }
  44. e.target.style.backgroundColor = "pink";
  45. videoDom.playbackRate = parseFloat(speeds[i]);
  46. localStorage.setItem(STORAGE_NAME, speeds[i]);
  47. })
  48. speedItemDivs.push(speedItemDiv);
  49. speedDiv.appendChild(speedItemDiv);
  50. }
  51. if (document.querySelector(".teleplayPage")) {
  52. speedDiv.style.paddingTop = "12px";
  53. speedDiv.style.paddingRight = "80px";
  54. speedDiv.style.paddingBottom = "0px";
  55. speedDiv.style.paddingLeft = "80px";
  56. speedDiv.style.position = "relative";
  57. speedDiv.style.bottom = "-10px";
  58. speedDiv.style.top = "12px";
  59. }
  60. playerBlockDiv.parentNode.parentNode.parentNode.parentNode.parentNode.insertBefore(speedDiv, playerBlockDiv.parentNode.parentNode.parentNode.parentNode);
  61. clearInterval(initTimer);
  62. }
  63. }, 200);
  64.  
  65. let activeBtn = false;
  66. let initSpeedTimer = setInterval(function () {
  67. if (speedDiv && videoDom) {
  68. // init default speed
  69. let storageSpeed = parseFloat(localStorage.getItem(STORAGE_NAME)) || 1;
  70. if (!activeBtn || storageSpeed !== parseFloat(videoDom.playbackRate)) {
  71. let index = speeds.indexOf(storageSpeed);
  72. if (index >= 0) {
  73. speedDiv.querySelector("#speed_" + index).click();
  74. } else {
  75. speedDiv.querySelector("#speed_1").click();
  76. }
  77. activeBtn = true;
  78. }
  79. }
  80. }, 500);
  81.  
  82. })();

QingJ © 2025

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