Greasy Fork is available in English.

m.YouTube.com more playback speeds

Adds 2.25x 2.5x 2.75x 3x speed buttons below the video

Ekde 2023/10/12. Vidu La ĝisdata versio.

// ==UserScript==
// @name         m.YouTube.com more playback speeds
// @namespace    m-youtube-com-more-playback-speeds
// @version      1.3
// @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==

(function() {
    //'use strict';

    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"];

        speeds.forEach((speed)=>{
            let button = document.createElement('button');
            button.textContent = speed;
            button.className = "speedbutton";

            button.style.margin = "5px";
            button.style.padding = "5px";
            button.style.backgroundColor = "blue";
            button.style.position = "relative";

            button.onclick = function() {
                let video = document.querySelector("video");

                if(video && video.readyState >= 2) {

                    video.playbackRate = this.textContent;

                    video.mozPreservesPitch = video.webkitPreservesPitch = video.preservePitch = true;

                    document.querySelectorAll(".speedbutton").forEach((btn)=>{
                        btn.style.backgroundColor = "blue";
                    });
                    this.style.backgroundColor = "darkorange";
                }
            };

            let target = document.getElementById("speedbuttons");
            target.insertBefore(button, target.firstChild);

        }); // end speeds foreach

    } // end addbuttons

    window.addEventListener('load', function () {
        setInterval(()=>{
            if( document.getElementById("speedbuttons") == undefined ){
                let parent = document.querySelector('.related-chips-slot-wrapper');
                let wrapper = document.createElement('div');
                wrapper.setAttribute("id","speedbuttons");
                parent.insertBefore(wrapper, parent.firstChild);
                addbuttons();
            }
        }, 1000);
    }); // end addEventListener

})();