YouTube Downloader

github.com/yt-dlp/yt-dlp/releases
github.com/Dinesh6777/Universal-Video-Downloader-GUI/releases

 

Wie kann ich yt-dlp benutzen mit deno und Google chrome? Kannst du mir issue 7271 erklären und eine Lösung vorschlagen?

Die Verwendung von yt-dlp in Kombination mit Deno und Google Chrome ist ein hervorragender Weg, um Downloads programmatisch zu steuern und gleichzeitig Login-Sitzungen (Cookies) zu nutzen.

Hier ist die Erklärung, wie du beides verbindest, was es mit dem bekannten Issue #7271 auf sich hat und wie du das Problem löst.

1. yt-dlp mit Deno nutzen

In Deno kannst du externe CLI-Tools wie yt-dlp über die Deno.Command-API ausführen.

Hier ist ein einfaches Beispiel, wie du yt-dlp aufrufst und anweist, die Cookies aus Google Chrome zu lesen:

TypeScript

// download.ts
const url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";

const command = new Deno.Command("yt-dlp", {
  args: [
    "--cookies-from-browser", "chrome",
    "--format", "bestvideo+bestaudio/best",
    url
  ],
  stdout: "piped",
  stderr: "piped",
});

console.log("Starte Download...");
const { code, stdout, stderr } = await command.output();

if (code === 0) {
  console.log("Download erfolgreich!");
} else {
  const errorString = new TextDecoder().decode(stderr);
  console.error("Fehler beim Download:", errorString);
}

Hinweis: Um dieses Skript auszuführen, benötigt Deno die Berechtigung, Subprozesse zu starten. Der Befehl lautet: deno run --allow-run download.ts

2. Erklärung zu Issue #7271

Wenn du den obigen Code ausführst, während Google Chrome geöffnet ist, wirst du unter Windows (und manchmal macOS) sehr wahrscheinlich auf folgende Fehlermeldung stoßen: ERROR: Could not copy Chrome cookie database. See https://github.com/yt-dlp/yt-dlp/issues/7271 for more info.

Das Problem

Issue #7271 beschreibt einen Konflikt bei der Dateisperrung. Moderne Chromium-Browser (Chrome, Edge, Brave) sperren die SQLite-Datenbank, in der deine Cookies gespeichert sind (Network Persistent State / Cookies), sobald der Browser geöffnet ist (Feature: LockProfileCookieDatabase).

Wenn yt-dlp versucht, diese Datei zu kopieren oder zu lesen, um die Sitzungsdaten für YouTube zu extrahieren, verweigert das Betriebssystem den Zugriff mit einem “Permission Denied”-Fehler.

3. Lösungen für das Cookie-Problem

Es gibt drei gängige Wege, um dieses Problem zu umgehen:

Lösung A: Chrome vor dem Ausführen schließen (Die einfachste Methode)

Schließe alle Instanzen von Google Chrome vollständig, bevor du dein Deno-Skript startest. Sobald Chrome geschlossen ist, gibt das Betriebssystem die Cookie-Datenbank frei und yt-dlp kann fehlerfrei darauf zugreifen.

Lösung B: Cookies manuell exportieren (Die robusteste Methode)

Da das Auslesen direkt aus dem Browser zunehmend instabil wird, empfiehlt das yt-dlp-Team, die Cookies manuell in eine Textdatei zu exportieren.

  1. Installiere eine Browser-Erweiterung wie Get cookies.txt LOCALLY oder Export Cookies.

  2. Exportiere deine Cookies für YouTube als cookies.txt.

  3. Passe dein Deno-Skript an, um diese Datei direkt zu nutzen:

TypeScript

// Nutze die exportierte Datei statt des Browsers
args: [
  "--cookies", "./cookies.txt", 
  url
]

Lösung C: Chrome-Sperre via Verknüpfung deaktivieren

Falls du Chrome unbedingt offen lassen musst, kannst du Chrome mit einem speziellen Flag starten, welches die Datenbanksperre deaktiviert:

  • Windows: Erstelle eine Kopie deiner Chrome-Verknüpfung, mache einen Rechtsklick -> Eigenschaften und hänge folgendes an das Feld Ziel an: --disable-features=LockProfileCookieDatabase

  • macOS (Terminal): open -a "Google Chrome" --args --disable-features=LockProfileCookieDatabase

Ich habe Chrome geschlossen. Jetzt gibt es eine anderer Fehlermeldung:

[21:37:45] [ERROR] ERROR: Failed to decrypt with DPAPI. See  https://github.com/yt-dlp/yt-dlp/issues/10927  for more info.

Kannst du mir das erklären?

Diesen Fehler hast du dir nicht ausgesucht – du bist hier gerade über eine der größten Hürden gestolpert, die Google in Chromium eingebaut hat.

Das Problem: Was bedeutet Issue #10927?

DPAPI steht für Data Protection API (eine Verschlüsselungsschnittstelle von Windows).

Google Chrome hat eine verschärfte Sicherheitsfunktion namens Application-Bound Encryption (anwendungsgebundene Verschlüsselung) eingeführt. Früher konnte jedes Programm, das unter deinem Windows-Benutzerkonto lief (wie yt-dlp), deine Chrome-Cookies mit DPAPI entschlüsseln.

Jetzt signiert Chrome den Verschlüsselungs-Key so, dass nur noch die originale chrome.exe selbst diesen Key jemals wieder entschlüsseln darf. Wenn ein externes Tool wie yt-dlp versucht, an die Keys heranzukommen, verweigert Windows den Dienst und wirft genau diesen Fehler: Failed to decrypt with DPAPI.

Da das eine fundamentale Änderung in Windows-Chrome ist, kann yt-dlp dieses Problem beim direkten Browser-Zugriff technisch nicht mehr umgehen.

Die Lösungen

Da das direkte Auslesen aus Chrome unter Windows dauerhaft blockiert ist, hast du drei Optionen, um dein Deno-Skript wieder zum Laufen zu bringen:

Lösung 1: Cookies exportieren (Empfohlen)

Das ist der sauberste und vom yt-dlp-Team empfohlene Weg.

  1. Installiere im Chrome Web Store eine Extension wie “Get cookies.txt LOCALLY”.

  2. Besuche YouTube, klicke auf das Extension-Icon und exportiere die Cookies als Textdatei (z. B. cookies.txt).

  3. Verschiebe die Datei in deinen Deno-Projektordner und passe die Argumente im Skript an:

TypeScript

// Passe dein Deno-Skript an:
args: [
  "--cookies", "./cookies.txt", // Ersetzt --cookies-from-browser
  "--format", "bestvideo+bestaudio/best",
  url
],

Lösung 2: Auf Firefox umsteigen

Firefox nutzt diese anwendungsgebundene Windows-Verschlüsselung nicht. Wenn du deine YouTube-Sitzung in Firefox startest, klappt der direkte Zugriff aus dem Skript weiterhin problemlos.

Du musst im Deno-Code lediglich den Browser-Namen ändern:

TypeScript

args: [
  "--cookies-from-browser", "firefox", // Chrome durch firefox ersetzen
  url
],

Lösung 3: Chrome Enterprise-Richtlinie (Für Bastler)

Falls du zwingend Chrome ohne manuelle Exporte nutzen musst, kannst du die neue Verschlüsselung über die Windows-Registry (Group Policy) komplett abschalten.

Achtung: Das senkt die Sicherheit deines Browsers, da auch Schadsoftware theoretisch wieder leichter an deine Cookies gelangen kann. Zudem werden dabei alle deine aktuell im Browser gespeicherten Passwörter/Cookies einmalig zurückgesetzt.

Falls du das dennoch tun möchtest, musst du in der Windows-Registrierung den folgenden Registry-Eintrag setzen und Chrome neu starten:

  • Pfad: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome

  • Name: ApplicationBoundEncryptionEnabled

  • Typ: DWORD

  • Wert: 0

Leave a Reply

Your email address will not be published. Required fields are marked *