Greasy Fork is available in English.

YouTube More Speeds

Adds buttons under a YouTube video with more playback speeds.

// ==UserScript==
// @version      1.5.1
// @name         YouTube More Speeds
// @description  Adds buttons under a YouTube video with more playback speeds.

// @name:af YouTube Meer Spoed
// @description:af Voeg knoppies onder 'n YouTube-video by met meer afspeel spoed.

// @name:am የ YouTube ተጨማሪ ፍጥነት
// @description:am ተጨማሪ ማጫወት ፍጥነት ጋር የ YouTube ቪዲዮ በታች አዝራሮች ያክላል.

// @name:ar يوتيوب عن السرعات
// @description:ar ويضيف أزرار تحت شريط فيديو YouTube بمزيد من سرعات التشغيل.

// @name:az YouTube Daha Xızı
// @description:az daha playback sürəti ilə bir YouTube video altında düymələri edər.

// @name:be YouTube Больш Паскарае
// @description:be Дадае кнопкі пад відэа на YouTube з больш хуткасцю прайгравання.

// @name:bg YouTube Повече Скорости
// @description:bg Добавя бутони под видео YouTube с повече скорост на възпроизвеждане.

// @name:bn YouTube কে আরও গতি
// @description:bn আরো প্লেব্যাক গতি সঙ্গে একটি YouTube ভিডিও অধীনে বোতাম যোগ করে।

// @name:bs YouTube Više Brzine
// @description:bs Dodaje tipke ispod YouTube video s više brzina reprodukcije.

// @name:ca YouTube Més terminis d'enviament
// @description:ca Afegeix botons sota d'un vídeo de YouTube amb més velocitats de reproducció.

// @name:co YouTube More acceleratu
// @description:co Aghjusta buttoni sottu una Video YouTube cù di più ùn mettite italiani.

// @name:cs YouTube Další Rychlosti
// @description:cs Přidá tlačítek pod videem na YouTube s více rychlostí přehrávání.

// @name:cy YouTube Mwy Speeds
// @description:cy Ychwanegu botymau dan fideo YouTube gyda mwy o gyflymder playback.

// @name:da YouTube Flere Hastigheder
// @description:da Tilføjer knapper under en YouTube-video med flere afspilningshastigheder.

// @name:de YouTube Mehr Geschwindigkeiten
// @description:de Fügt Schaltflächen unter einem YouTube-Video mit mehr Wiedergabegeschwindigkeiten.

// @name:el YouTube Περισσότερες ταχύτητες
// @description:el Προσθέτει κουμπιά κάτω από ένα βίντεο στο YouTube με περισσότερες ταχύτητες αναπαραγωγής.

// @name:eo YouTube Pli Rapidoj
// @description:eo Aldonas butonojn sub Youtube video kun pli reprodukto rapidoj.

// @name:es YouTube Más plazos de envío
// @description:es Añade botones debajo de un vídeo de YouTube con más velocidades de reproducción.

// @name:et YouTube Rohkem Kiirused
// @description:et Lisab nuppe all YouTube video rohkem taasesituse kiirust.

// @name:eu YouTube abiadura gehiago
// @description:eu Gehitzen botoiak YouTube bideo bat erreprodukzioa abiadura gehiagorekin azpian.

// @name:fa یوتیوب سرعت بیشتر
// @description:fa می افزاید دکمه زیر ویدیو یوتیوب با سرعت پخش است.

// @name:fi YouTube Enemmän Nopeudet
// @description:fi Lisää painikkeita alle YouTube-videota enemmän hakunopeutta.

// @name:fr YouTube Plus de délais
// @description:fr Ajoute des boutons sous une vidéo YouTube avec plus de vitesse de lecture.

// @name:fy YouTube More speeds
// @description:fy Foeget knoppen ûnder in YouTube video mei mear Wiedergabe faasjes.

// @name:ga YouTube More Luasanna
// @description:ga Cuir cnaipí faoi físeán YouTube le luasanna athsheinm níos mó.

// @name:gd YouTube Tuilleadh astaran
// @description:gd Putanan cur fo YouTube bhidio le barrachd playback astaran.

// @name:gl YouTube máis velocidades
// @description:gl Engade botóns debaixo dun vídeo de YouTube con máis velocidade de reprodución.

// @name:gu YouTube ને વધુ ગતિ
// @description:gu વધુ પ્લેબેક ઝડપ સાથે YouTube વિડિઓ હેઠળ બટનો ઉમેરે છે.

// @name:ha YouTube More gudu
// @description:ha Yana ƙara mashiga a karkashin wani YouTube video da more sake kunnawa gudu.

// @name:hi यूट्यूब अधिक गति
// @description:hi अधिक प्लेबैक गति के साथ एक यूट्यूब वीडियो के तहत बटन जोड़ता है।

// @name:hr YouTube više brzina
// @description:hr Dodaje gumbiće pod YouTube video s više brzina reprodukcije.

// @name:ht YouTube Plis vitès
// @description:ht Ajoute bouton anba yon videyo YouTube ki gen plis vitès lèktur.

// @name:hu YouTube több fokozat
// @description:hu Hozzáteszi gombok alatt egy YouTube videót, több lejátszási sebesség.

// @name:hy YouTube Լրացուցիչ արագությունների
// @description:hy Ավելացնում է կոճակներ տակ YouTube տեսանյութի հետ ավելի նվագարկումը արագությամբ:

// @name:id YouTube Kecepatan Lebih
// @description:id Menambahkan tombol di bawah video YouTube dengan kecepatan pemutaran lebih.

// @name:ig YouTube More gbapụrụ ọsọ
// @description:ig Na-agbakwụnye, mkpọchi n'okpuru a YouTube video na ihe playback gbapụrụ ọsọ.

// @name:is YouTube Fleiri Hraðbátur
// @description:is Bætir hnappana undir YouTube vídeó með fleiri spilun hraða.

// @name:it YouTube più costi
// @description:it Aggiunge pulsanti sotto un video di YouTube con più velocità di riproduzione.

// @name:iw מהירויות נוספות YouTube
// @description:iw הוספה לחצנים תחת סרטון YouTube עם מהירויות הפעלה נוספות.

// @name:ja YouTubeでもっとスピード
// @description:ja より多くの再生速度でYouTubeの動画の下にボタンを追加します。

// @name:jw YouTube Kecepatan More
// @description:jw Nambah tombol ing video YouTube karo kecepatan puter maneh liyane.

// @name:ka YouTube- ზე სიჩქარეზე
// @description:ka დასძენს ღილაკები ქვეშ YouTube video უფრო აღწარმოება სიჩქარეზე.

// @name:kk YouTube Толығырақ жылдамдығын
// @description:kk көп ойнату жылдамдықпен бар YouTube бейненің астында түймелерін қосады.

// @name:km គេហទំព័រ YouTube ល្បឿនបន្ថែម
// @description:km បន្ថែមប៊ូតុងនៅក្រោមវីដេអូ YouTube ជាមួយល្បឿនការចាក់សារថ្មីបន្ថែមទៀត។

// @name:kn ಯೂಟ್ಯೂಬ್ ಇನ್ನಷ್ಟು ವೇಗವನ್ನು
// @description:kn ಹೆಚ್ಚು ಹಿನ್ನೆಲೆ ವೇಗವನ್ನು ಹೊಂದಿರುವ YouTube ವೀಡಿಯೊ ಅಡಿಯಲ್ಲಿ ಗುಂಡಿಗಳು ಸೇರಿಸುತ್ತದೆ.

// @name:ko 유튜브 더 속도
// @description:ko 더 재생 속도가 YouTube 동영상 아래에 버튼을 추가합니다.

// @name:ku YouTube Leza More
// @description:ku Serkêşiya bişkokên di bin video YouTube bi Leza playback more.

// @name:ky YouTube More ылдамдыгы
// @description:ky көп ойнотуу ылдамдыгы менен YouTube Video астында баскычтарын кошот.

// @name:la Magis YouTube Speeds
// @description:la A YouTube video playback, cum magis per adiungit Bullae volo.

// @name:lo YouTube ຄວາມໄວເພີ່ມເຕີມ
// @description:lo ເພີ່ມປຸ່ມພາຍໃຕ້ວິດີໂອ YouTube ກັບຄວາມໄວການຫຼິ້ນຫຼາຍ.

// @name:lt YouTube Daugiau Greičiai
// @description:lt Prideda mygtukus pagal YouTube vaizdo įrašą su daugiau grojimo greitį.

// @name:lv YouTube Vairāk ātrumi
// @description:lv Pievieno pogas zem YouTube video ar vairākiem atskaņošanas ātrumu.

// @name:mg YouTube More hafainganam-pandeha
// @description:mg Manampy bokotra eo ambanin'ny lahatsary YouTube bebe kokoa playback hafainganam-pandeha.

// @name:mi YouTube tere atu
// @description:mi Ka tāpiri pātene i raro i te ataata YouTube ki atu tere purei anō.

// @name:mk YouTube повеќе добива на темпо
// @description:mk Додава копчиња под видео на YouTube со повеќе брзини на репродукција.

// @name:ml YouTube കൂടുതൽ വേഗത
// @description:ml കൂടുതൽ പ്ലേബാക്ക് വേഗത ഒരു YouTube വീഡിയോ കീഴിൽ ബട്ടണുകൾ ചേർക്കുന്നു.

// @name:mn YouTube-ийн илүү хурдасгана
// @description:mn илүү тоглуулах хурд нь YouTube-ийн видеоны дор товч нэмнэ.

// @name:mo YouTube Mai multe Vitezele
// @description:mo Adaugă butoane sub un videoclip YouTube cu mai multe viteze de redare.

// @name:mr YouTube अधिक गती
// @description:mr अधिक प्लेबॅक गती YouTube व्हिडिओ अंतर्गत बटणे जोडते.

// @name:ms YouTube Lebih Kelajuan
// @description:ms Menambah butang di bawah video YouTube dengan lebih kelajuan main balik.

// @name:mt YouTube Veloċitajiet Aktar
// @description:mt Iżżid buttuni taħt YouTube video ma veloċitajiet daqq aktar.

// @name:ne YouTube मा थप गति
// @description:ne अन्तर्गत थप प्लेब्याक गति संग YouTube भिडियो बटन थप्छ।

// @name:nl YouTube Meer Snelheden
// @description:nl Voegt knoppen onder een YouTube-video toe met meer afspeelsnelheden.

// @name:no YouTube Flere Hastigheter
// @description:no Legger knappene under en YouTube-video med flere avspillingshastigheter.

// @name:ny YouTube imathamanga More
// @description:ny Akuwonjezera mabatani pansi kanema YouTube ndi imathamanga kwambiri kubwezeretsa.

// @name:or YouTube ଅଧିକ ତୀବ୍ର କରିଥାଏ
// @description:or ଅଧିକ ପ୍ଲେବ୍ୟାକ୍ ଗତିକୁ ସହିତ ଏକ YouTube ଭିଡିଓ ଅଧୀନରେ ବଟନ ଯୋଡେ।

// @name:pa YouTube 'ਹੋਰ ਗਤੀ
// @description:pa ਹੋਰ ਪਲੇਅਬੈਕ ਸਪੀਡ ਨਾਲ ਇੱਕ ਯੂਟਿਊਬ ਵੀਡੀਓ ਦੇ ਅਧੀਨ ਬਟਨ ਨੂੰ ਜੋੜਦਾ ਹੈ.

// @name:pl Więcej Prędkości YouTube
// @description:pl Dodaje przyciski pod wideo YouTube z większą prędkością odtwarzania.

// @name:ps یوټیوب نور سرعت
// @description:ps سره نور بیاغږول سرعت یوه یوټیوب ویډیو لاندې تڼۍ زیاتوي.

// @name:ro YouTube Mai multe Vitezele
// @description:ro Adaugă butoane sub un videoclip YouTube cu mai multe viteze de redare.

// @name:ru YouTube Больше Ускоряет
// @description:ru Добавляет кнопки под видео на YouTube с более скоростью воспроизведения.

// @name:rw YouTube muvuduko More
// @description:rw Yongeraho Utubuto munsi video YouTube na muvuduko more musomyi.

// @name:sd يوٽيوب وڌيڪ لمحو
// @description:sd وڌيڪ playback لمحو سان هڪ يوٽيوب وڊيو هيٺ بٽڻ وڌائيندو آھي.

// @name:si යූ ටියුබ් තවත් වේගය
// @description:si වැඩි ධාවනය වේගය සමග YouTube වීඩියෝ යටතේ බොත්තම් පවසයි.

// @name:sk YouTube Ďalší Rýchlosti
// @description:sk Pridá tlačidiel pod videom na YouTube s viac rýchlostí prehrávania.

// @name:sl YouTube Več Hitrosti
// @description:sl Doda gumbe pod video YouTube z več hitrostmi predvajanja.

// @name:sn YouTube More aimhanya
// @description:sn Anowedzera mabhatani pasi YouTube vhidhiyo yakawanda playback aimhanya.

// @name:so YouTube Xawaaraha More
// @description:so Darayaa badhamada hoos video YouTube la xawaare loo maqli dheeraad ah.

// @name:sq YouTube shumë Shpejtësi
// @description:sq Shton butonat nën një video YouTube me më shumë shpejtësi rishikim.

// @name:sr ИоуТубе Море Брзине
// @description:sr Додаје дугмад под ИоуТубе видео са више брзина репродукције.

// @name:st YouTube lebelo More
// @description:st O phaella ka ho dikonopo tlas'a video YouTube le lebelo ho feta ho bapala.

// @name:su YouTube speeds More
// @description:su Nambihan tombol di handapeun hiji video YouTube jeung speeds playback langkung.

// @name:sv YouTube Fler Hastigheter
// @description:sv Lägger knapparna under en YouTube-video med fler uppspelningshastigheter.

// @name:sw YouTube Kasi Zaidi
// @description:sw Anaongeza vifungo chini ya video za YouTube na kasi zaidi wa kucheza.

// @name:ta YouTube இல் மேலும் வேகங்கள்
// @description:ta மேலும் பின்னணி வேகம் ஒரு YouTube வீடியோ கீழ் பொத்தான்கள் சேர்க்கிறது.

// @name:te YouTube మరింత వేగం
// @description:te మరింత ప్లేబ్యాక్ వేగం తో YouTube వీడియో కింద బటన్లు జోడిస్తుంది.

// @name:tg YouTube суръати бештар
// @description:tg Илова тугмаҳои зери Видео YouTube ки бо суръати бозикунии бештар.

// @name:th YouTube ความเร็วเพิ่มเติม
// @description:th เพิ่มปุ่มภายใต้วิดีโอ YouTube ที่มีความเร็วในการเล่นมากขึ้น

// @name:tk YouTube köp Hızları
// @description:tk has oýnalýan ýeri tizligi bilen YouTube astynda düwmelerini goşýar.

// @name:tl YouTube Higit pang mga Bilis
// @description:tl Nagdadagdag ng mga pindutan sa ilalim ng isang video sa YouTube na may higit pang mga bilis ng pag-playback.

// @name:tr YouTube Daha Hızları
// @description:tr Daha fazla oynatma hızı ile bir YouTube videosu altında düğmeler ekler.

// @name:tt YouTube More сцряти
// @description:tt тагын уйнау тизлек белән YouTube видео буенча төймәсен өсти.

// @name:ug YouTube كۆپ سۈرئىتى
// @description:ug تېخىمۇ كۆپ قويغۇچ سۈرئىتى بىلەن YouTube غا ئاستىدا كۇنۇپكىسى قوشۇلغان.

// @name:uk YouTube Більше Прискорює
// @description:uk Додає кнопки під відео на YouTube з більш швидкістю відтворення.

// @name:ur YouTube کو مزید رفتار
// @description:ur زیادہ پلے بیک رفتار کے ساتھ ایک YouTube ویڈیو کے نیچے بٹن جوڑتا ہے.

// @name:uz YouTube ko'proq Tezligi
// @description:uz ko'proq ijro etish, tezlik bilan YouTube video ostida tugmalari qo'shadi.

// @name:vi YouTube More Tốc độ
// @description:vi Thêm nút dưới một video với tốc độ phát lại hơn YouTube.

// @name:xh YouTube ngesantya More
// @description:xh amaqhosha Wongeza phantsi YouTube ividiyo kunye ngezantya ngaphezulu ukudlalwa.

// @name:yi יאָוטובע מער ספּעעדס
// @description:yi מוסיף קנעפּלעך אונטער אַ יאָוטובע ווידעא מיט מער פּלייבאַק ספּידז.

// @name:yo YouTube Die iyara
// @description:yo Afikun awọn bọtini labẹ a YouTube fidio pẹlu diẹ sẹhin iyara.

// @name:zh YouTube上的更多速度
// @description:zh 添加下一个YouTube视频与更多的播放速度按钮。

// @name:zu Ngesivinini-YouTube angeziwe
// @description:zu Yengeza izinkinobho ngaphansi kwevidiyo ye-YouTube nge ngaphezulu ukudlala ngesivinini.

// @namespace    https://github.com/ssssssander
// @icon https://www.youtube.com/s/desktop/3748dff5/img/favicon_48.png
// @author       ssssssander
// @homepage https://github.com/ssssssander/youtube-more-speeds
// @supportURL https://github.com/ssssssander/youtube-more-speeds/issues
// @match        *://*.youtube.com/*
// @license MIT
// ==/UserScript==

// https://stackoverflow.com/questions/34077641/how-to-detect-page-navigation-on-youtube-and-modify-its-appearance-seamlessly
// https://stackoverflow.com/questions/19238791/how-to-use-waitforkeyelements-to-display-information-after-select-images

(function() {
    'use strict';

    // BEGIN waitForKeyElements
    /**
 * A utility function for userscripts that detects and handles AJAXed content.
 *
 * Usage example:
 *
 *     function callback(domElement) {
 *         domElement.innerHTML = "This text inserted by waitForKeyElements().";
 *     }
 *
 *     waitForKeyElements("div.comments", callback);
 *     // or
 *     waitForKeyElements(selectorFunction, callback);
 *
 * @param {(string|function)} selectorOrFunction - The selector string or function.
 * @param {function} callback - The callback function; takes a single DOM element as parameter.
 *                              If returns true, element will be processed again on subsequent iterations.
 * @param {boolean} [waitOnce=true] - Whether to stop after the first elements are found.
 * @param {number} [interval=300] - The time (ms) to wait between iterations.
 * @param {number} [maxIntervals=-1] - The max number of intervals to run (negative number for unlimited).
 */
    function waitForKeyElements(selectorOrFunction, callback, waitOnce, interval, maxIntervals) {
        if (typeof waitOnce === "undefined") {
            waitOnce = true;
        }
        if (typeof interval === "undefined") {
            interval = 300;
        }
        if (typeof maxIntervals === "undefined") {
            maxIntervals = -1;
        }
        var targetNodes = (typeof selectorOrFunction === "function")
        ? selectorOrFunction()
        : document.querySelectorAll(selectorOrFunction);

        var targetsFound = targetNodes && targetNodes.length > 0;
        if (targetsFound) {
            targetNodes.forEach(function(targetNode) {
                var attrAlreadyFound = "data-userscript-alreadyFound";
                var alreadyFound = targetNode.getAttribute(attrAlreadyFound) || false;
                if (!alreadyFound) {
                    var cancelFound = callback(targetNode);
                    if (cancelFound) {
                        targetsFound = false;
                    }
                    else {
                        targetNode.setAttribute(attrAlreadyFound, true);
                    }
                }
            });
        }

        if (maxIntervals !== 0 && !(targetsFound && waitOnce)) {
            maxIntervals -= 1;
            setTimeout(function() {
                waitForKeyElements(selectorOrFunction, callback, waitOnce, interval, maxIntervals);
            }, interval);
        }
    }
    // END waitForKeyElements

    // Actual code starts here
    let funcDone = false;
    const titleElemSelector = 'div#title.style-scope.ytd-watch-metadata';
    const colors = ['#072525', '#287F54', '#C22544']; // https://www.schemecolor.com/wedding-in-india.php
    if (!funcDone) window.addEventListener('yt-navigate-start', addSpeeds);

    if (document.body && !funcDone) {
        waitForKeyElements(titleElemSelector, addSpeeds);
    }

    function addSpeeds() {
        if (funcDone) return;

        let bgColor = colors[0];
        let moreSpeedsDiv = document.createElement('div');
        moreSpeedsDiv.id = 'more-speeds';

        for (let i = 0.25; i < 16; i +=.25) {
            if (i >= 1) { bgColor = colors[1]; }
            if (i > 4) { i+=.75; }
            if (i > 8) { i++; bgColor = colors[2]; }

            let btn = document.createElement('button');
            btn.style.backgroundColor = bgColor;
            btn.style.marginRight = '4px';
            btn.style.border = '1px solid #D3D3D3';
            btn.style.borderRadius = '2px';
            btn.style.color = '#ffffff';
            btn.style.cursor = 'pointer';
            btn.style.fontFamily = 'monospace';
            btn.textContent = '×' + (i.toString().substr(0, 1) == '0' ? i.toString().substr(1): i.toString());
            btn.addEventListener('click', () => { document.getElementsByTagName('video')[0].playbackRate = i } );
            moreSpeedsDiv.appendChild(btn);
        }

        let titleElem = document.querySelector(titleElemSelector);
        titleElem.after(moreSpeedsDiv);

        funcDone = true;
    }
})();