Como você baixa vários arquivos/vídeos, simultaneamente, em uma gota de oceano digital básica?
Digamos que eu crie um droplet/VPS digitalocean básico, que execute o Ubuntu
eu inicio o console
eu faço apt install python
e wget https://youtube-dl.org/downloads/latest/youtube-dl
echmod 777 youtube-dl
Existem alguns arquivos que eu quero baixar, por exemplo, esses dois arquivos de vídeo
https://www.youtube.com/watch?v=iXFvkJLqPqo (o Johnny Depp, cerca de 11min)
e
https://www.youtube.com/watch?v=-QwtKBC6iQY (um ricky gervais)
Eu tenho um arquivo com os dois vídeos
user@basicdroplettest1:~# cat vidfilelist.txt
https://www.youtube.com/watch?v=iXFvkJLqPqo
https://www.youtube.com/watch?v=-QwtKBC6iQY
Se eu fosse fazerwhile read in; do ./youtube-dl "$in"; done < vidfilelist
ele executa o youtube-dl em cada linha do arquivo, por exemplo youtube-dl https://www.youtube.com/watch?v=iXFvkJLqPqo
, e depoisyoutube-dl https://www.youtube.com/watch?v=-QwtKBC6iQY
Então, ele baixa o primeiro, então, quando esse terminar, ele começa a baixar o segundo.
Então não é simultâneo
Se eu colocar um e comercial no final de cada linha
user@basicdroplettest1:~# cat ./vidfilelist.txt
https://www.youtube.com/watch?v=iXFvkJLqPqo &
https://www.youtube.com/watch?v=-QwtKBC6iQY &
Então faça
(este comando bash while é cortesia de https://stackoverflow.com/questions/13939038/how-do-you-run-a-command-eg-chmod-for-each-line-of-a-file )
user@basicdroplettest1:~# while read in; do ./youtube-dl "$in"; done < vidfilelist.txt
[youtube] iXFvkJLqPqo: Downloading webpage
[download] Destination: Top Johnny Depp Comebacks & Reactions to Questioning While Testifying-iXFvkJLqPqo.mp4
[download] 2.5% of 20.67MiB at 50.65KiB/s ETA 06:47
[download] 3.0% of 20.67MiB at 50.90KiB/s ETA 06:43
[download] 3.2% of 20.67MiB at 50.95KiB/s ETA 06:41
[download] 5.5% of 20.67MiB at 51.04KiB/s ETA 06:31
Veja acima, estou pressionando ENTER, mas não está indo para o fundo e para o próximo.
Então isso não funcionou.
Alguma idéia de como posso fazer o download de cada um dos arquivos de vídeo no arquivo, em segundo plano?
(em vez de baixar um, seguido pelo outro).
Você está no caminho certo com o
&
, mas não quer isso como parte do nome do arquivo. Você quer executar isso:Mas como você tem o
&
no arquivo, você está realmente executando isso:Além disso, você provavelmente deseja redirecionar o erro padrão para que seu terminal não seja poluído pelos relatórios de progresso. Tente isto:
Isso deve ser bom para uma lista de URLs, mas como regra geral ao analisar arquivos de texto no shell, você também deseja limpar o separador de campo de entrada
IFS=
e garantir que não expanda\
sequências -escape, então faça o seguinte:TLTR; Esta resposta pode ajudar alguém
De qualquer shell bash você pode usar youtube-dl
instalação do youtube-dl para Ubuntu
apt repo
pacote python (python scriptable) (principalmente atualizado)
tenha em mente: na maioria das vezes, apenas a versão mais recente é a de trabalho
Baixe vídeos de um link (arquivo/lista de reprodução/pesquisa)
Baixe vários arquivos
Do arquivo contendo links
consulte a resposta @terdon nesta pergunta para interpretação silenciosa
A partir de um link de pesquisa ou lista de reprodução , você pode deixar o youtube-dl baixá-lo como arquivos
ou consulte esta resposta da minha pergunta anterior para um download mais estruturado https://stackoverflow.com/a/67144906/9907243
Além da resposta de Terdon.
eu diria
a) use yt-dlp , porque é muito mais rápido que o youtube-dl. É um fork do youtube-dl.
b) use screen (o comando screen). Porque caso contrário, quando você desconecta a sessão, a sessão ssh, por exemplo, fechando a janela, o download para! Tela de execução pressione ENTER. Existem atalhos como ctrl-a , ctrl-d e um comando screen -r, que cobrem para anexar e remover de "telas", e screen -ls para listar "telas". Existem vídeos no youtube sobre o comando screen. Ele também pode ser usado para criar um tipo de exibição lado a lado, mas você não precisa desse recurso.
c) Se você optar por não baixá-los simultaneamente, por exemplo, devido ao risco de ser bloqueado, o yt-dlp pode receber um nome de arquivo com uma lista de URLs. E pode haver uma opção para pausar entre cada um, ou você pode ter apenas uma lista de comandos a serem executados (por exemplo, yt-dlp http://..../watch?v=adfsdf), com sleeps entre eles.
d) Se você tiver uma lista de URLs do youtube, pode haver alguns formatos de arquivo diferentes, por exemplo, um pode sair como .webm E se por algum motivo um arquivo não for baixado corretamente, pode sair como .part ou algo assim . Portanto, use comandos como DIR ou if *nix then ls e find, para ver não apenas o número total de arquivos baixados, mas quais tipos de arquivo.