5/11/2025, 9:27:12 PM
当前为
// ==UserScript==
// @name Smooth YouTube livestream
// @namespace UserScripts
// @version 0.1.2
// @license MIT License
// @match https://www.youtube.com/*
// @grant none
// @author -
// @description 5/11/2025, 9:27:12 PM
// ==/UserScript==
(() => {
let cid1 = 0, cid2 = 0;
let checks = new Set();
let lastMedia = null;
const onDelayDone = () => {
const media = lastMedia;
lastMedia = null;
if (!media) return;
// L = n * 1 - n * 0.968
if (media.isConnected && media.playbackRate === 0.968) {
media.playbackRate = 1;
}
}
const delayCheck = () => {
let media;
for (const target of checks) {
if (target.isConnected && target.playbackRate === 1 && target.matches('#player *, #ytd-player *')) {
media = target;
break;
}
}
if (!media) return;
if (!document.querySelector('.ytp-live-badge.ytp-live-badge-is-livehead')) return;
if (cid2) clearTimeout(cid2);
if (lastMedia && lastMedia.isConnected && lastMedia.playbackRate === 0.968) lastMedia.playbackRate = 1;
lastMedia = media;
media.playbackRate = 0.968;
cid2 = setTimeout(onDelayDone, 30000);
}
document.addEventListener('canplay', (e) => {
if (!e || !e.isTrusted || !(e.target instanceof HTMLMediaElement)) return;
const p = document.querySelector('.ytp-live-badge.ytp-live-badge-is-livehead');
const media = e.target;
if (p && media.playbackRate === 1) {
if (cid1) clearTimeout(cid1);
checks.add(media);
cid1 = setTimeout(delayCheck, 100);
}
}, true);
})();