web-dev-qa-db-fra.com

youtube-dl; Comment télécharger SEULEMENT la playlist, PAS les fichiers qui y sont contenus

Essayer d'obtenir uniquement le contenu de la liste de lecture (plus de 600 entrées) à partir d'une URL, ainsi:

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

qui, selon la page de manuel, devrait répertorier les entrées de la liste de lecture tout en empêchant le téléchargement de fichiers.

Au lieu de cela, il se bloque après avoir généré cette sortie:

~ $ 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  

Comment dois-je faire cela?

6
user985675

Avez-vous lu la page wysiwig suggérée dans son commentaire? ( merci @wysiwig! )

Liste de playlist Youtube avec youtube-dl

Quoi qu’il en soit, je vais essayer ici d’expliquer ce que vous pourriez faire (extrait du site précédent)

Essayez d'utiliser cette commande:

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

Cela produira une sortie similaire à celle de result.log:

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

ce qui devrait être ce dont vous avez besoin (une liste de liens discrets vers YT vidéos).

Explication de la commande Avec l'option -j, youtube-dl générera une sortie JSON contenant toutes les informations sur le lien que vous passez (une liste de lecture dans ce cas).

Cette sortie JSON est ensuite transmise au processeur JSON jq (vous devez l’installer avant , voir le site Web JQ ) en recherchant toutes les clés "id" contenues dans le fichier. Sortie JSON (0gvUCLL-UGE, CPV7zcUy4J0,4wyZNwIrH9I, ...). Nous passons ensuite ces "id" à sed qui préfixera chacun d'eux avec https://youtu.be/ donnant le résultat que j'ai montré précédemment.

Note 1: Pour installer JQ, vous pouvez simplement utiliser: Sudo apt-get install jq

Note 2: Cette approche fonctionne uniquement pour Youtube .

8
radiolondra

La méthode de @wysiwig produit une sortie sur linux, mais pas ce que je cherchais, donc:

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

Sortie:

[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Page de téléchargement
[download] Liste de lecture en téléchargement: Full Length Arthouse Movies
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Page de téléchargement n ° 1
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Page de téléchargement # 2
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Page de téléchargement # 3
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Page de téléchargement # 4
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Page de téléchargement # 5
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Page de téléchargement # 6
[youtube: playlist] playlist Full Length Arthouse Movies: Téléchargement de 636 vidéos
[télécharger] Téléchargement vidéo 1 de 636
[télécharger] Téléchargement de la vidéo 2 sur 636
[télécharger] Téléchargement de la vidéo 3 sur 636
...

Ce que je voulais vraiment extraire de la liste de lecture, ce sont les noms de vidéos, afin de ne pouvoir sélectionner que ceux que je veux télécharger, que je reçois avec:

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

Sortie:

Les serveurs (film complet, long métrage, film complet) _voulez des films complets gratuitement-CNotezuR73g.mp4
Malcolm X (Film complet, Anglais, Film complet) _vivez des films complets gratuitement-3C8j1C7HMj8.mp4
The Arizona Kid - Western, Film complet, Long métrage long métrage avec ROY ROGERS, Films classiques-8McZ6G2Uud8.mp4
Desperado Man, alias Sagebrush Trail (Western Film, Film complet, Long métrage, Film classique) -7udmB5M6IIE.mp4
...

1
user985675

Il semble que vous ne citez pas l'URL. Toujours citer les URL. Sur n'importe quel système d'exploitation.

Dans votre exemple, le problème est clairement visible:

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

[1] 4531 signifie qu'un travail (ID 1) a été lancé et est exécuté avec le PID 4531.

Cette ligne de commande est plus ou moins équivalente à:

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

L'esperluette à la fin signifie que la ligne 1 sera exécutée en arrière-plan. Il sera toujours connecté à votre Shell, vous verrez donc sa sortie. C’est probablement pas suspendu, mais juste terminé: c’est juste un lien vers une vidéo.

La ligne 2 est une affectation de variable dans Bash. Il définira une variable appelée list si elle n’existe pas déjà. Ce sera utilisable comme ceci:

~ $ echo $list
PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr

La ligne de commande correcte que vous souhaitez utiliser est la suivante:

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