您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Remembers playback speed.
当前为
// ==UserScript== // @name YouTube speed rememberer // @version 0.3.4 // @description Remembers playback speed. // @description:ru Запоминает скорость воспроизведения. // @author gvvad // @match *.youtube.com/* // @run-at document-body // @license GPL-3.0+; http://www.gnu.org/licenses/gpl-3.0.txt // @namespace https://gf.qytechs.cn/users/100160 // ==/UserScript== (function() { 'use strict'; const PLAYER_SELECTOR = "#movie_player"; let store = { get rate() { return parseFloat(localStorage.getItem("pl-rate")) || 1.0; }, set rate(v) { localStorage.setItem("pl-rate", v); } } // set button on video player // _msg - lable string let setLabel = function(_msg, _mp) { let label = document.querySelector("#_ytp-label"); if (_msg === undefined) { if (label) label.parentElement.removeChild(label); return; } if (label) { label.innerText = _msg; return; } let cls = document.querySelector(PLAYER_SELECTOR).querySelector("#movie_player .ytp-right-controls"); let span = document.createElement('span'); span.setAttribute('id','_ytp-label'); span.setAttribute('class','ytp-button'); span.onclick = function() { _mp.setPlaybackRate(1); }; span.innerText = _msg; cls.insertBefore(span, cls.firstChild); }; // set or remove button let setSpeedLabel = function(rate, mp) { setLabel((rate==1)? undefined : 'x'+rate, mp); }; // modificate player object and store play rate // mp - movieplayer object let worker = function(mp) { let state = mp.getProgressState(); if (store.rate != 1.0 && !state.isAtLiveHead) { mp.setPlaybackRate(store.rate); setSpeedLabel(mp.getPlaybackRate(), mp); } mp.addEventListener("onPlaybackRateChange", function(){ store.rate = mp.getPlaybackRate(); setSpeedLabel(mp.getPlaybackRate(), mp); }); }; let observer = new MutationObserver(function(mRecord){ let pl = document.querySelector(PLAYER_SELECTOR); if (pl) { worker(pl); this.disconnect(); } }); observer.observe(document.body, {attributes: false, childList: true, characterData: false}); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址