
Estou procurando um gerenciador de download rodando em CLI (terminal).
A ferramenta deve resolver o seguinte propósito.
Pegue uma lista de URLs do YouTube como entrada/pegue uma lista de URLs de um arquivo.
Deve pausar e retomar o download quando a conexão de rede for interrompida.
Deve ser executado no terminal. Estou executando isso em um servidor de mídia sem cabeça.
Eu uso um youtube-dl
script nodejs agora. Mas o script carece de monitoramento de conexão e verificação de integridade de download, recurso de retomada de download.
Eu tentei o Extreme Download Manager e ele não funcionava sem cabeça.
Quaisquer contribuições para alcançar o mesmo são apreciadas.
Responder1
Dois while
loops 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
é um pacote python disponível para instalação por meio de um gerenciador de pacotes comum, comoapt
./tmp/yt
arquivo contém uma lista de URLs linha por linha.-i
significa continuar escolhendo o próximo URL no arquivo se encontrar um erro de URL inválido (mas não um erro de soquete, que irá paraping
o loop "falha e espera pela rede ativa")-c
significa forçar a retomada de arquivos parcialmente baixados. O nome do arquivo deve ter um formato consistente para que o currículo funcione (ou seja, você não pode alteraryoutube-dl
o formato da próxima vez e esperar que o currículo funcione). Eu pessoalmente uso-o './%(title)s-%(upload_date)s-%(id)s.%(ext)s'
o formato- Pessoalmente, também adiciono
--no-mtime
para garantir que o arquivo "toque" (útil se eu quiser listar a classificação do arquivo por tempo de download em vez de tempo de atualização do vídeo).
Responder2
Qualquer linha de comandoHTTPcliente deve ser útil. Em sistemas POSIX, considereGNU wgetouondulação(e, se o protocolo forFTP, um dos numerosos clientes de linha de comando FTP, comoncftp).
Você também pode codificar algo sozinho, usando alguma biblioteca cliente HTTP comolibcurl(e muitas linguagens de script, por exemplo, Python, Guile, Perl, etc... possuem vários recursos de cliente HTTP). Não deixe de aprender um pouco mais sobreHTTPe os seusbiscoitos.
Você pode encontrar (para Linux) algumas ferramentas de linha de comando específicas do YouTube.