-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinject.js
37 lines (35 loc) · 1.12 KB
/
inject.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function getYtdPlayer() {
const ytdPlayer = document.getElementById("ytd-player");
if (ytdPlayer && ytdPlayer.getPlayer() !== null) {
extendPlaybackSpeeds(ytdPlayer.getPlayer());
} else {
return false;
}
}
function extendPlaybackSpeeds(player) {
const ytPlayer = window._yt_player;
if (ytPlayer) {
for (const obj of Object.values(ytPlayer)) {
for (const value of Object.values(obj)) {
if (value && typeof value.getAvailablePlaybackRates === "function") {
value.getAvailablePlaybackRates = () => [0.125, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4];
}
}
}
}
if (player && sessionStorage.getItem("yt-player-playback-rate")) {
player.setPlaybackRate(parseFloat(JSON.parse(sessionStorage.getItem("yt-player-playback-rate")).data));
}
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", getYtdPlayer);
} else {
const observer = new MutationObserver(() => {
if (getYtdPlayer() !== false) {
observer.disconnect();
}
});
observer.observe(document.body, {
childList: true,
});
}