it-swarm.com.de

youtube-dl; Wie NUR die Wiedergabeliste herunterladen, NICHT die darin enthaltenen Dateien

Der Versuch, nur den Inhalt der Wiedergabeliste (sollte 600+ Einträge enthalten) von einer URL abzurufen, lautet folgendermaßen:

youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr

die laut man-seite playlisteneinträge auflisten und gleichzeitig das herunterladen von dateien verhindern soll.

Stattdessen hängt es nach der Erstellung dieser Ausgabe:

~ $ youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr  
[1] 4531  
~ $ [debug] System config: []  
[debug] User config: []  
[debug] Custom config: []  
[debug] Command-line args: ['-i', '-v', '--flat-playlist', '--skip-download', 'https://www.youtube.com/watch?v=CNotezuR73g']  
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8  
[debug] youtube-dl version 2018.07.10  
[debug] Python version 3.6.6 (CPython) - Linux-4.17.6-1-Arch-x86_64-with-Arch  
[debug] exe versions: ffmpeg 4.0.1, ffprobe 4.0.1, rtmpdump 2.4  
[debug] Proxy map: {}  
[youtube] CNotezuR73g: Downloading webpage  
[youtube] CNotezuR73g: Downloading video info webpage  
[debug] Default format spec: bestvideo+bestaudio/best  

Wie soll ich das machen?

6
user985675

Hast du die Seite gelesen, die wysiwig in seinem Kommentar vorgeschlagen hat? ( danke @wysiwig! )

Youtube-Playlist mit youtube-dl auflisten

Wie auch immer, hier werde ich versuchen zu erklären, was Sie tun könnten (Auszug aus der vorherigen Website)

Versuchen Sie es mit diesem Befehl:

youtube-dl -j --flat-playlist "https://<yourYoutubePlaylist>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > result.log

Dies erzeugt eine Ausgabe ähnlich der in result.log:

https://youtu.be/0gvUCLL-UGE
https://youtu.be/CPV7zcUy4J0
https://youtu.be/4wyZNwIrH9I
...

welches sollte das sein, was du brauchst (eine Liste von diskreten Links zu YT Videos).

Befehlserklärung Mit der Option -j erzeugt youtube-dl eine JSON-Ausgabe, die alle Informationen über den Link enthält, den Sie übergeben (in diesem Fall eine Wiedergabeliste).

Diese JSON-Ausgabe wird dann an den JSON-Prozessor jq weitergeleitet (muss vor der Installation installiert werden , siehe JQ-Website ) und sucht nach allen "id" -Schlüsseln in der JSON-Ausgabe (0gvUCLL-UGE, CPV7zcUy4J0,4wyZNwIrH9I, ...). Wir übergeben dann diese "IDs" an sed, die jeweils mit https://youtu.be/ als Präfix versehen werden, um das zuvor gezeigte Ergebnis zu erhalten.

Hinweis 1: Zum Installieren von JQ können Sie einfach Folgendes verwenden: Sudo apt-get install jq

Hinweis 2: Dieser Ansatz funktioniert nur für Youtube .

8
radiolondra

Die Methode von @wysiwig erzeugt zwar eine Ausgabe unter Linux, aber nicht das, wonach ich gesucht habe.

$ youtube-dl --flat-playlist --skip-download https://www.youtube.com/playlist?list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr  

Ausgabe :

[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Herunterladen der Webseite
[download] Wiedergabeliste herunterladen: Arthouse-Filme in voller Länge
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Lade Seite 1 herunter
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Lade Seite 2 herunter
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Seite 3 wird heruntergeladen
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Seite 4 wird heruntergeladen
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Lade Seite 5 herunter
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Lade Seite 6 herunter
[youtube: playlist] playlist Arthouse-Filme in voller Länge: Herunterladen von 636 Videos
[download] Video 1 von 636 wird heruntergeladen
[download] Video 2 von 636 wird heruntergeladen
[download] Video 3 von 636 wird heruntergeladen
...

Was ich wirklich von der Wiedergabeliste haben wollte, sind die Videonamen, so dass ich nur die auswählen konnte, die ich herunterladen möchte, und die ich mit folgenden Angaben bekomme:

$ youtube-dl -i --get-filename --skip-download https://www.youtube.com/playlist?list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr  

Ausgabe :

The Waiters (FILM in voller Länge, gesamter Spielfilm, voller Film) _Volle Filme für free-CNotezuR73g.mp4 ansehen
Malcolm X (MORGAN FREEMAN, Voller Film, Englisch, Film in voller Länge) _watch full movies for free-3C8j1C7HMj8.mp4
The Arizona Kid - Western, Filme in voller Länge, Spielfilm mit ROY ROGERS, Classic Movies-8McZ6G2Uud8.mp4
Desperado Man aka Sagebrush Trail (Westernfilm, Langfilm, Spielfilm, Filmklassiker) -7udmB5M6IIE.mp4
...

1
user985675

Offenbar zitieren Sie die URL nicht. URLs immer zitieren. Auf jedem Betriebssystem.

In Ihrem Beispiel ist das Problem deutlich sichtbar:

~ $ youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
[1] 4531

[1] 4531 bedeutet, dass ein Job (ID 1) gestartet wurde und mit PID 4531 ausgeführt wird.

Diese Befehlszeile entspricht mehr oder weniger:

youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g &
list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr

Das kaufmännische Und am Ende bedeutet, dass Zeile 1 im Hintergrund ausgeführt wird. Es ist weiterhin mit Ihrer Shell verbunden, sodass die Ausgabe angezeigt wird. Es hängt wahrscheinlich nicht, ist gerade fertig: Es ist immerhin nur ein Link zu einem Video.

Zeile 2 ist eine variable Zuweisung in Bash. Es wird eine Variable mit dem Namen "list" definiert, sofern sie noch nicht vorhanden ist. Es kann folgendermaßen verwendet werden:

~ $ echo $list
PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr

Die richtige Befehlszeile, die Sie verwenden möchten, lautet:

youtube-dl -i -v --flat-playlist --skip-download "https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr"
1
Daniel B