Fixed Quality Setting

This commit is contained in:
sguenter 2024-04-25 18:08:00 +02:00
parent 4722c12dc2
commit 52663194ec
2 changed files with 33 additions and 17 deletions

View File

@ -1,13 +1,14 @@
async function getElement(selector: string): Promise<HTMLElement> {
const element = document.querySelector(selector);
if (!element) {
await new Promise((resolve) => setTimeout(resolve, 100));
return getElement(selector);
}
return element as HTMLElement;
}
const TRY_DURATION = 3000;
function trySettingQuality() {
const hiddenSelectors = [".ytp-gradient-top", ".ytp-chrome-top.ytp-show-cards-title", ".ytp-gradient-bottom", ".ytp-chrome-bottom", ".branding-img-container", ".ytp-settings-menu"];
hiddenSelectors.forEach(selector => {
const element = document.querySelector(`${selector}`) as HTMLElement;
if (element) {
element.style.visibility = "hidden";
}
});
const qualityMenu = document.querySelector(".ytp-settings-menu") as HTMLElement;
if (!qualityMenu) {
console.log("No settings menu found!");
@ -15,7 +16,6 @@ function trySettingQuality() {
}
qualityMenu.style.height = "auto"
qualityMenu.style.overflowX = "auto";
qualityMenu.style.visibility = "hidden";
const settingsButton = document.querySelector(".ytp-settings-button") as HTMLElement;
if (!settingsButton) {
@ -28,6 +28,7 @@ function trySettingQuality() {
const qualityButton = menuItems.find(item => {
return item.innerHTML.includes("Qualität") || item.innerHTML.includes("Quality");
});
if (!qualityButton) {
console.log("No quality buton found!");
settingsButton.click();
@ -61,17 +62,28 @@ function trySettingQuality() {
}
qualityElement.click();
return true;
}
document.addEventListener("DOMContentLoaded", async () => {
console.log("Setting Quality...")
while (!trySettingQuality()) {
async function setQuality() {
const start = Date.now();
let diff = 0;
while (!trySettingQuality() && diff < TRY_DURATION) {
console.log("Try Setting Quality...")
await new Promise((resolve) => setTimeout(resolve, 300));
diff = Date.now() - start;
}
const controls = await getElement(".ytp-chrome-bottom");
controls.style.visibility = "hidden";
console.log("Setting Quality done!");
if (diff >= TRY_DURATION) {
console.log("Setting Quality failed!");
} else {
console.log("Setting Quality done!");
}
}
document.addEventListener("DOMContentLoaded", setQuality);
window.addEventListener("message", ev => {
if (ev.data === "setQuality") {
setQuality();
}
});

View File

@ -25,7 +25,11 @@ export const YoutubePlayer = withMemo(function YoutubePlayer({id}: YoutubePlayer
// Callbacks
const setIsNotPlaying = useCallback(() => setIsPlaying(false), []);
const setIsCurrentlyPlaying = useCallback(() => setIsPlaying(true), []);
const setIsCurrentlyPlaying = useCallback(() => {
setIsPlaying(true);
const iframe = document.querySelector("iframe");
iframe?.contentWindow?.postMessage("setQuality", "https://www.youtube.com");
}, []);
const informAboutVideo = useCallback(() => {
if (!player) {