Skip to content

Instantly share code, notes, and snippets.

@Winschu
Created January 1, 2026 01:18
Show Gist options
  • Select an option

  • Save Winschu/8bea6f728f158d06f87ce59a8ddbf2a3 to your computer and use it in GitHub Desktop.

Select an option

Save Winschu/8bea6f728f158d06f87ce59a8ddbf2a3 to your computer and use it in GitHub Desktop.
Remove videos from youtube watch later playlist (german)
(async function() {
'use strict';
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const removeText_SingleQuotes = "Aus 'Später ansehen' entfernen";
const removeText_DoubleQuotes = 'Aus "Später ansehen" entfernen';
const menuButtons = document.querySelectorAll('ytd-playlist-video-renderer #menu yt-icon-button');
if (menuButtons.length === 0) {
console.log("Keine Menü-Buttons (⋮) gefunden.");
console.log("Tipp: Haben Sie GANZ nach unten gescrollt?");
return;
}
console.log(`${menuButtons.length} Videos gefunden. Starte den Entfernungsvorgang...`);
console.log("Prüfe jetzt auf '...' UND \"...\" Anführungszeichen.");
for (let i = 0; i < menuButtons.length; i++) {
menuButtons[i].click();
// Warte 700ms, bis das Menü-Popup sicher erschienen ist
await sleep(700);
let removeButton = null;
// Suche alle Menü-Einträge
document.querySelectorAll('ytd-menu-service-item-renderer yt-formatted-string, paper-item yt-formatted-string')
.forEach(item => {
const currentText = item.textContent.trim();
if ((currentText === removeText_SingleQuotes || currentText === removeText_DoubleQuotes) && item.offsetParent !== null) {
removeButton = item;
}
});
if (removeButton) {
const parentWrapper = removeButton.closest('ytd-menu-service-item-renderer') || removeButton.closest('paper-item');
if (parentWrapper) {
parentWrapper.click();
console.log(`Video ${i + 1} / ${menuButtons.length} entfernt.`);
} else {
console.log(`Konnte Klick-Wrapper für Video ${i + 1} nicht finden.`);
}
} else {
console.log(`FEHLER: Konnte "Entfernen"-Button für Video ${i + 1} nicht finden. (Weder ' noch " gefunden, oder Menü war zu langsam)`);
document.body.click();
}
// Warte 700ms, bis die Aktion abgeschlossen ist
await sleep(700);
}
console.log("Skript abgeschlossen.");
console.log("Wenn noch Videos übrig sind, führen Sie das Skript einfach NOCHMAL aus.");
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment