Adds 2.25x 2.5x 2.75x 3x speed buttons below the video
当前为
// ==UserScript==
// @name m.YouTube.com more playback speeds
// @namespace m-youtube-com-more-playback-speeds
// @version 1.7
// @description Adds 2.25x 2.5x 2.75x 3x speed buttons below the video
// @author hlorand.hu
// @match https://m.youtube.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @grant none
// @license https://creativecommons.org/licenses/by-nc-sa/4.0/
// ==/UserScript==
// Screenshot: https://ibb.co/chtmD9F
(function() {
//'use strict';
function setspeed(speed){
// highlight
document.querySelectorAll(".speedbutton").forEach((btn)=>{
if( btn.textContent == speed){
btn.style.backgroundColor = "darkorange";
console.log(btn);
} else {
btn.style.backgroundColor = "blue";
}
});
let video = document.querySelector("video");
if(video && video.readyState >= 2) {
localStorage.setItem("yt_playbackspeed", speed);
video.playbackRate = speed;
video.mozPreservesPitch = video.webkitPreservesPitch = video.preservePitch = true;
}
}
function addbuttons(){
document.getElementById("speedbuttons").innerHTML = "";
const speeds = ["3.5","3.25","3.0","2.75","2.5","2.25","2.0","1.75","1.5","1.0"];
speeds.forEach((speed)=>{
let button = document.createElement('button');
button.textContent = speed;
button.className = "speedbutton";
button.style.margin = "5px 3px 5px 5px";
button.style.padding = "5px";
button.style.backgroundColor = "blue";
button.style.position = "relative";
button.onclick = function() {
setspeed(this.textContent);
};
let target = document.getElementById("speedbuttons");
target.insertBefore(button, target.firstChild);
}); // end speeds foreach
} // end addbuttons
// Periodically check if the buttons are visible
// (sometimes YouTube redraws its interface).
setInterval(()=>{
// Creating a div that will contain buttons.
if( document.getElementById("speedbuttons") == undefined ){
let parent = document.querySelector('.related-chips-slot-wrapper'); // placement of buttons
let wrapper = document.createElement('div');
wrapper.setAttribute("id","speedbuttons");
parent.insertBefore(wrapper, parent.firstChild);
addbuttons();
}
setspeed( localStorage.getItem("yt_playbackspeed") ?? 1 );
}, 1000);
})();