Baixando vários arquivos com o youtube-dl

45

Eu uso o youtube-dl para baixar arquivos do YouTube. Eu tentei baixar vários arquivos, mas não está funcionando para mim. Tenho que abrir vários terminais e começar tudo de novo sempre que quiser baixar um vídeo.

Você pode me ajudar a baixar vários arquivos com uma única janela de terminal, apenas mencionando todos os URLs de uma só vez? Eu uso o Ubuntu 12.04 de 64 bits.

Mecha-Unix
fonte
1
Não é uma resposta para sua pergunta, mas outros podem tropeçar nisso. Se os vídeos estiverem relacionados de alguma forma, lembre-se de que o youtube-dl pode baixar todos os vídeos de uma lista de reprodução, usuário ou canal.
Dennis
veja a resposta abaixo (não a mais votada atualmente), sugerindo apenas adicionar um espaço entre as URLs e você está pronto.
gota

Respostas:

54

Atalhos

Se todos os vídeos estiverem na mesma lista de reprodução ou no mesmo canal, você poderá economizar tempo usando os seguintes atalhos.

Lista de reprodução

youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-playlist>

... onde <url-of-playlist>é substituído pelo URL da lista de reprodução e substitui FORMATpor qualquer formato de vídeo disponível, por exemplo 18. Você pode usar a -Fopção para ver todos os formatos válidos como este:

youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'

Faça o download de parte de uma lista de reprodução do início ao lote até o final do lote

youtube-dl -f FORMAT -ci --playlist-start NUMBER --playlist-end NUMBER <url-of-playlist>  

... onde <url-of-playlist>é substituído pelo URL da lista de reprodução, substitua FORMATpor qualquer formato de vídeo disponível, por exemplo 18, e NUMBERé o número do vídeo na lista de reprodução para iniciar / terminar o download em.

Canal

youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>

... onde <url-of-channel>é substituído pelo URL do canal e substitui FORMATpor qualquer formato de vídeo disponível, por exemplo 18.

Vídeos que não estão na mesma lista de reprodução ou canal

Primeiro, crie um arquivo em lotes, que é um arquivo de texto que contém uma lista de URLs de vídeos do YouTube que você deseja baixar. Os URLs devem ser organizados em uma lista com apenas um URL e nada mais em cada linha, com uma nova linha para cada URL na lista. Salve o arquivo em lotes com um nome fácil de lembrar, como batch-file.txt. Se os vários arquivos estiverem todos na mesma lista de reprodução, canal ou página do usuário no YouTube, você poderá gerar um arquivo de texto com uma lista que possua todos os links dessa página executando o seguinte comando:

sudo apt install jq  
youtube-dl -j --flat-playlist "https://<yourYoutubeWebpage>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > batch-file.txt

A partir do terminal:

youtube-dl -ct --simulate --batch-file='/path/to/batch-file.txt'

Esse é o comando básico; no entanto, você também precisa adicionar os formatos dos vídeos que deseja baixar ou pode baixar vídeos com formatos que não deseja. Primeiro, simule seu download para ver se o formato desejado está disponível:

youtube-dl -ct -f 34 --simulate 'http://www.youtube.com/some-alphanumeric-string'

Se o formato de vídeo não está disponível, você receberá uma mensagem de erro que diz: requested format not available. Se o formato de vídeo estiver disponível, você não receberá nenhuma mensagem de erro ao usar a --simulateopção. Você também pode adicionar a opção -F para ver todos os formatos válidos como este:

youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'

No terceiro comando Eu tenho usado o formato de vídeo comum flv 360p:
-f 34. Você pode preferir experimentar o formato de vídeo flv 480p usando -f 35. Então, depois de adicionar o formato de vídeo que você deseja ao comando, o comando se torna algo como isto:

youtube-dl -ciw -o "%(title)s.%(ext)s" --batch-file='/path/to/batch-file.txt'

Notas:

Não adicionei a --simulateopção ao último comando, portanto esse comando seria executado de verdade.

karel
fonte
18

Você pode colocar os URLs um após o outro, com um espaço entre eles. O Youtube-dl irá baixá-los sequencialmente. Isso é um pouco mais simples do que criar um arquivo em lotes.

Observe que a --help diz youtube-dl --help Usage: youtube-dl [options] url [url...]

Entrada de amostra:

youtube-dl http://www.youtube.com/watch?v=fqULJBBEVQE http://www.youtube.com/watch?v=vDbbz-BdyYc http://www.youtube.com/watch?v=OrIFaWJ9Glo

Saída de amostra:

    [youtube] Setting language
    [youtube] fqULJBBEVQE: Downloading video webpage
    [youtube] fqULJBBEVQE: Downloading video info webpage
    [youtube] fqULJBBEVQE: Extracting video information
    [download] Destination: Web Components - A Tectonic Shift for Web Development - Google I_O 2013-fqULJBBEVQE.mp4
    [download] 100% of 238.14MiB in 36:54
    [youtube] vDbbz-BdyYc: Downloading video webpage
    [youtube] vDbbz-BdyYc: Downloading video info webpage
    [youtube] vDbbz-BdyYc: Extracting video information
    [download] Paul Irish on Web Application Development Workflow-vDbbz-BdyYc.mp4 has already been downloaded
    [youtube] OrIFaWJ9Glo: Downloading video webpage
    [youtube] OrIFaWJ9Glo: Downloading video info webpage
    [youtube] OrIFaWJ9Glo: Extracting video information
    [download] Got server HTTP error. Retrying (attempt 1 of 20)...
    [download] Destination: Single Page Web Applications - JavaScript End-to-End (The Hard Stuff)-OrIFaWJ9Glo.mp4
    [download] 100% of 553.10MiB in 42:17
coreyb
fonte
1
Melhor resposta na minha opinião! Muito simples!
drop
5

Etapa 1: vá para a área de trabalho e crie um documento de texto chamadolist(ou qualquer outro nome). Copie e cole os URLs se os arquivos que você deseja baixar no arquivo, um URL por linha

Etapa 2: abra o terminal e vá para a área de trabalho

cd Desktop

etapa 3: para baixar os arquivos da sua lista, digite (substitualistadequadamente se você tiver nomeado seu arquivo com outra coisa)

youtube-dl -a list

Para baixar um canal do YouTube

Execute este comando

youtube-dl -citk -format mp4 -yes-playlist VIDEO_PLAYLIST_LINK
  • -c retomar arquivos parcialmente baixados
  • -i ignore quaisquer erros.
  • -t use o título do vídeo como o nome do arquivo.
  • -k mantenha o vídeo no disco após a conclusão do pós-processamento.
  • --format mp4 salve os arquivos de vídeo como arquivos MP4.
  • --yes-playlist afirma que o URL a seguir aponta para uma lista de reprodução de vídeo.
Ahmed Ismail
fonte
1
-citké muito enganador e pode levar a erros. -cforça a retomada, mesmo que não faça muito sentido. O padrão já está para continuar. -ipode ser bom, mas lembre-se de que pode haver erros em alguns vídeos. -tjá é o padrão e está obsoleto. -knão faz sentido com -f mp4. Veja as Perguntas frequentes do youtube-dl para mais detalhes.
Phihag
3

Se você tiver vários URLs de vídeo, adicione-os em uma lista de reprodução à sua Lista de reprodução do YouTube criando um novo ou usando um existente.

Em seguida, use o comando abaixo.

youtube-dl -f FORMAT --yes-playlist [url-of-playlist]

A opção --yes-playlistfará o download da lista de reprodução, se o URL se referir a um vídeo e uma lista de reprodução.

Essa é a opção mais simples e rápida que encontrei para o meu objetivo de baixar centenas de vídeos de um site que continha vídeos vinculados do YouTube.

user669330
fonte
Isso é útil para baixar muitos vídeos do mesmo canal. Você pode usar uma lista de reprodução não listado para não torná-lo público
QWR
3

Para baixar vários vídeos, você pode usar essa estrutura. É semelhante à resposta do @ coreyb com a adição de que você pode usá-lo em outro lugar no bash, por exemplo, com eco. Aqui estão duas maneiras:

Suspensórios

youtube-dl -f FORMAT {url1,url2,url...}

Repita o último comando sem o último argumento

youtube-dl -f FORMAT url1; !:- url2; !:-url...
Xui
fonte
3

solução mais simples seria fazer um script bash como este

#!/bin/bash
terminal=`tty`
exec < ~/Documents/youtubevideolinks.txt

while read -r line
do
    cd ~/Desktop/TilakDa/
    youtube-dl -f 18 "$line"
done
exec < "$terminal"

basta copiar e colar os links de vídeo nesse arquivo txt na pasta de documentos com cada URL de vídeo em uma nova linha e executar este script, ele fará o download dos vídeos um por um. Por padrão, a -f 18opção é para vídeos 360p

Shantanu Bedajna
fonte
1

Digite o comando e digite &&e digite o próximo comando, como:

youtube-dl--add-metadata -xic http://(the url) && youtube-dl--add-metadata -xic http://(the url) 
user859198
fonte
1

Tente com o script bash:

while read LL ; do youtube-dl "$LL" ; done < your_file
totolezero
fonte
1

O tópico ainda é relevante, então:

  • Obtenha seu link do YouTube.
  • Remova o primeiro parâmetro de vídeo começando com ?
  • use assim :-)

    youtube-dl.exe --yes-playlist https://www.youtube.com/watch?list=yourlistlink
    

Isso funciona para mim.

studen
fonte