2010-09-03 6 views
8

youtube-dl è uno script Python che consente di scaricare video di YouTube. Esso supporta un'opzione per i download in batch:Coda semplice per youtube-dl nella shell Linux

-a FILE, --batch-file=FILE
file contenente gli URL per scaricare ('-' per stdin)

Voglio installare una sorta di coda di modo che io possa semplicemente aggiungere URL alle un file e averli youtube-dl elaborarli. Attualmente, non rimuove i file dal file batch. Vedo l'opzione per '-' stdin e non so se posso usarlo a mio vantaggio.

In effetti, mi piacerebbe eseguire youtube-dl come una forma di demone che controllerà il file della coda e scaricherà i nomi dei file contenuti.

Come posso fare questo?

risposta

4

La coda -f non funzionerà perché lo script legge tutti gli input contemporaneamente.

Funzionerà se si modifica lo script per eseguire una lettura continua del file batch.

Poi basta eseguire lo script come:

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

Quando si accoda alcuni dati in batch.txt, dicono:

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

Lo script inizierà a scaricare il video allegato al lotto.

Questa è la patch si dovrebbe applicare alla versione più recente di "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]) 

Speranza che aiuta, video di Felice guardare ;)

NOTA: A causa del codice di ristrutturazione questa patch non funzionerà più. Sarebbe interessato a vedere se questo potrebbe essere aggiunto al codice upstream.

1

Potresti riuscire a scappare usando tail -f per leggere dal tuo file. Non uscirà quando raggiunge la fine del file, ma aspetterà che vengano aggiunti altri dati al file.

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

Dal tail -f non esce, youtube-dl dovrebbe continuare a leggere i nomi dei file da stdin e mai uscita.