youtube-dl; Como baixar apenas a lista de reprodução, não os arquivos nela

2

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?

user985675
fonte
Eu estou no Windows, então talvez isso não se aplique ao Linux, mas eu tive que mudar o URL para https://www.youtube.com/playlist?list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr Além disso, veja isto: archive.zhimingwang.org/blog/…
wysiwyg
Os comentários parecem estar limitados a uma linha, por isso devo fazer uma postagem separada, veja abaixo.
user985675

Respostas:

4

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:

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

Isso produzirá uma saída semelhante a esta em result.log:

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

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 para sed qual prefixará cada um deles com https://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ó.

radiolondra
fonte
Depois que me cansei de olhar os nomes dos filmes no imdb e baixá-los individualmente, resolvi a sua solução como a mais conveniente, mas com a inserção de outro comando sed antes do jq para eliminar todos os 'vídeos privados', assim: youtube-dl -j --flat-playlist "https://<yourYoutubePlaylist>"|sed '/Private video/d'|jq -r '.id'|sed 's_^_https://youtu.be/_' > result.log
user985675
1

Parece que você não está citando o URL. Sempre citar URLs. Em qualquer sistema operacional.

No seu exemplo, o problema é claramente visível:

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

[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:

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

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:

~ $ echo $list
PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr

A linha de comando correta que você deseja usar é:

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

@wysiwig O método produz saída no linux, mas não o que eu procurava, assim:

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

Saída:

[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Download da página da Web
[baixar] Baixando lista de reprodução: Full Length Arthouse Movies
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Download da página 1
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Download da página 2
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Download da página 3
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Página de download # 4
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Download da página 5
[youtube: playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr: Baixando a página # 6
[youtube: playlist] playlist Comprimento Arthouse Filmes: Download de 636 vídeos
[baixar] Baixando vídeo 1 de 636
[baixar] Baixando vídeo 2 de 636
[baixar] Baixando vídeo 3 de 636
...

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:

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

Saída:

The Waiters (filme completo, filme completo, filme completo) assista filmes completos gratuitamente- CNotezuR73g.mp4
Malcolm X (MORGAN FREEMAN, Filme completo, Inglês, Filme em tamanho cheio) assistir filmes completos para livre-3C8j1C7HMj8.mp4
The Arizona Kid - Filme Ocidental, Completo, Longa Duração, estrelado por ROY ROGERS, Classic Movies-8McZ6G2Uud8.mp4
Desperado Man, também conhecido como Sagebrush Trail (Filme Ocidental, Filme Completo, Longa-Metragem, Filme Clássico) -7udmB5M6IIE.mp4
...

user985675
fonte