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?
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 .
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
...
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"