2010-09-03 44 views
8

youtube-dl es un script de Python que permite descargar videos de YouTube. Es compatible con una opción de descarga por lotes:Cola simple para youtube-dl en el shell de Linux

-a FILE, --batch-file=FILE
archivo que contiene las direcciones URL de descarga ('-' para la entrada estándar)

Quiero fijar una especie de cola de lo que simplemente puede añadir URLs a un archivo y tener youtube-dl procesarlos. Actualmente, no elimina archivos del archivo por lotes. Veo la opción para '-' stdin y no sé si puedo usar esto para mi ventaja.

En efecto, me gustaría ejecutar youtube-dl como alguna forma de daemon que verificará el archivo de la cola y descargará los nombres de los archivos contenidos.

¿Cómo puedo hacer esto?

Respuesta

4

El tail -f no funcionará porque el script lee todas las entradas a la vez.

Funcionará si modifica la secuencia de comandos para realizar una lectura continua del archivo de proceso por lotes.

Entonces sólo tiene que ejecutar el script como:

% ./youtube-dl -a batch.txt -c 

Al añadir algunos datos en batch.txt, dicen:

% echo "http://www.youtube.com/watch?v=j9SgDoypXcI" >>batch.txt 

El guión comenzará a descargar el video anexado al lote.

Este es el parche se debe aplicar a la última versión de "youtube-dl":

2278,2286d2277 
<  while True: 
<   batchurls = batchfd.readlines() 
<   if not batchurls: 
<    time.sleep(1) 
<    continue 
<   batchurls = [x.strip() for x in batchurls] 
<   batchurls = [x for x in batchurls if len(x) > 0] 
<   for bb in batchurls: 
<    retcode = fd.download([bb]) 

creo que sirve, vídeo feliz viendo ;)

NOTA: Debido a la reestructuración de código este parche ya no funcionará Estaría interesado en ver si esto podría agregarse al código de flujo ascendente.

1

Es posible que pueda salirse con la suya usando tail -f para leer desde su archivo. No saldrá cuando llegue al final del archivo, pero esperará a que se añadan más datos al archivo.

>video.queue # erase and/or create queue file 
tail -f video.queue | youtube-dl -a - 

Desde tail -f no sale, youtube-dl debe continuar leyendo los nombres de archivo de la entrada estándar y nunca salir.

Cuestiones relacionadas