Dois while
loop em bash
devem ser suficientes:
while ! youtube-dl --batch-file /tmp/yt -i -c --socket-timeout 5; do while ! ping -c 1 -W 1 google.com; do echo "Network interface may down, please check your network"; sleep 10; done; echo "Network up but got url failed before, re-loop file after 5 seconds."; sleep 5; done
Explicação:
-
youtube-dl
é o pacote python disponível para instalação via ordinária gerenciador de pacotes, comoapt
. -
O arquivo
/tmp/yt
contém uma lista de URLs linha a linha. -
-i
significa continuar escolha a próxima url no arquivo se encontrar erro de url inválido (mas não o erro de soquete, que entrará no cicloping
de "falha e espera pela rede para cima") -
-c
significa retomar a força dos arquivos baixados parcialmente. O nome do arquivo deve ter um formato consistente para que o currículo funcione (ou seja, não é possível alterar o formatoyoutube-dl
da próxima vez e esperar que o currículo funcione). Eu pessoalmente uso-o './%(title)s-%(upload_date)s-%(id)s.%(ext)s'
format - Eu também adiciono
--no-mtime
para garantir que o arquivo "toque" (útil se eu quiser listar a classificação do arquivo pelo tempo de download em vez do tempo de atualização do vídeo).