Tentando obter apenas o conteúdo da lista de reprodução (deve ter mais de 600 entradas) de um URL, assim:
youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
que, de acordo com a página do manual, deve listar as entradas da lista de reprodução, evitando o download de arquivos.
Em vez disso, trava, depois de produzir esta saída:
~ $ 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
Como devo fazer isso?
https://www.youtube.com/playlist?list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
Além disso, veja isto: archive.zhimingwang.org/blog/…Respostas:
Você leu a página? wysiwyg sugeriu em seu comentário? ( obrigado @wysiwig! )
Listar playlist do YouTube com o youtube-dl
De qualquer forma, aqui vou tentar explicar o que você poderia fazer (extraído do site anterior)
Tente usar este comando:
Isso produzirá uma saída semelhante a esta em result.log:
qual deve ser o que você precisa (uma lista de links discretos para vídeos do YT).
Explicação do comando Com o
-j
A opção youtube-dl produzirá uma saída JSON que contém todas as informações sobre o link que você passa (uma lista de reprodução neste caso).Essa saída JSON é então passada para
jq
Processador JSON (você tem que instalá-lo antes veja o site do JQ ) procurando por todas as chaves "id" contidas na saída JSON (0gvUCLL-UGE, CPV7zcUy4J0,4wyZNwIrH9I, ...). Em seguida, passamos esses "id" s parased
qual prefixará cada um deles comhttps://youtu.be/
dando o resultado que eu mostrei antes.Nota 1: Para instalar o JQ, você pode simplesmente usar:
sudo apt-get install jq
Nota 2: Esta abordagem funciona para Youtube só.
fonte
youtube-dl -j --flat-playlist "https://<yourYoutubePlaylist>"|sed '/Private video/d'|jq -r '.id'|sed 's_^_https://youtu.be/_' > result.log
Parece que você não está citando o URL. Sempre citar URLs. Em qualquer sistema operacional.
No seu exemplo, o problema é claramente visível:
[1] 4531
significa que um trabalho (ID 1) foi iniciado e está sendo executado com o PID 4531.Esta linha de comando é mais ou menos equivalente a:
Oe comercial no final significa que a linha 1 será executada em segundo plano. Ele ainda estará conectado ao seu shell, então você verá sua saída. Provavelmente não está pendurado, acabou de terminar: é apenas um link para um vídeo depois de tudo.
A linha 2 é uma atribuição variável no Bash. Isso definirá uma variável chamada
list
se ainda não existe. Pode ser usado assim:A linha de comando correta que você deseja usar é:
fonte
@wysiwig
O método produz saída no linux, mas não o que eu procurava, assim:Saída:
O que eu realmente queria obter da lista de reprodução são os nomes dos vídeos, para que eu possa escolher apenas aqueles que eu quero baixar, com os quais eu obtenho:
Saída:
fonte