Buscando un administrador de descargas de terminal

Buscando un administrador de descargas de terminal

Estoy buscando un administrador de descargas que se ejecute en CLI (terminal).

La herramienta debe resolver el siguiente propósito.

  1. Tome una lista de URL de YouTube como entrada/tome una lista de URL de un archivo.

  2. Debe pausar y reanudar la descarga cuando se interrumpe la conexión de red.

  3. Debería ejecutarse en la terminal. Estoy ejecutando esto en un servidor de medios sin cabeza.

Ahora uso un youtube-dlscript nodejs. Pero el script carece de monitoreo de conexión, verificación de integridad de descarga y función de reanudación de descarga.

Probé el administrador de descargas extremas y no se ejecutó sin cabeza.

Se agradece cualquier aportación para lograr lo mismo.

Respuesta1

Dos whilebucles bashdeberían 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

Explicación:

  • youtube-dl¿Hay un paquete de Python disponible para instalar a través del administrador de paquetes normal, como apt.
  • /tmp/ytEl archivo contiene una lista de URL línea por línea.
  • -isignifica continuar seleccionando la siguiente URL en el archivo si encuentra un error de URL no válido (pero no un error de socket, que entrará en pingel bucle "falló y esperará a que la red funcione")
  • -csignifica forzar la reanudación de archivos parcialmente descargados. El nombre del archivo debe tener un formato consistente para que el currículum funcione (es decir, no puede cambiar youtube-dlel formato la próxima vez y esperar que el currículum funcione). Yo personalmente uso -o './%(title)s-%(upload_date)s-%(id)s.%(ext)s'el formato
  • Personalmente también agrego --no-mtimepara asegurar que el archivo sea "táctil" (útil si quiero ordenar los archivos por tiempo de descarga en lugar de por tiempo de actualización del video).

Respuesta2

Cualquier línea de comandoHTTPEl cliente debería ser útil. En sistemas POSIX, considereobjeto GNUorizo(y, si el protocolo esftp, uno de los numerosos clientes de línea de comandos FTP comoncftp).

También puedes codificar algo tú mismo, usando alguna biblioteca de cliente HTTP comolibcurl(y muchos lenguajes de secuencias de comandos, por ejemplo, Python, Guile, Perl, etc... tienen numerosas funciones de cliente HTTP). Asegúrate de aprender un poco más sobreHTTPy esgalletas.

Puede encontrar (para Linux) algunas herramientas de línea de comandos específicas de YouTube.

información relacionada