2010-09-03 1 views
8

youtube-dl ist ein Python-Skript, mit dem man YouTube-Videos herunterladen kann. Es unterstützt eine Option für die Batch-Downloads:Einfache Warteschlange für youtube-dl in der Linux-Shell

-a FILE, --batch-file=FILE
Datei mit URLs zum Download ('-' für stdin)

ich einrichten möchten eine Art Warteschlange, so kann ich einfach URLs anhängen eine Datei und haben youtube-dl verarbeiten sie. Derzeit werden Dateien nicht aus der Stapeldatei entfernt. Ich sehe die Option für '-' Stdin und weiß nicht, ob ich das zu meinem Vorteil nutzen kann.

Eigentlich würde ich youtube-dl als eine Art von Daemon ausführen, die die Warteschlangendatei überprüfen und die enthaltenen Dateinamen herunterladen wird.

Wie kann ich das tun?

Antwort

4

Der Tail -f funktioniert nicht, weil das Skript alle Eingaben gleichzeitig liest.

Es funktioniert, wenn Sie das Skript ändern, um ein fortlaufendes Lesen der Stapeldatei durchzuführen.

Dann einfach das Skript ausführen wie:

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

Wenn Sie einige Daten in batch.txt anhängen, sagen:

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

Das Skript startet die anhängenden Video zu dem Ansatz herunterzuladen.

Dies ist der Patch auf die neueste Version von "youtube-dl" gelten sollten:

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]) 

Hoffe, dass es hilft, Glückliche Viedeo ;)

HINWEIS: Aufgrund der Code Umstrukturierung Dieser Patch wird nicht mehr funktionieren. Es wäre interessant zu sehen, ob dies zum Upstream-Code hinzugefügt werden könnte.

1

Sie könnten mit tail -f davonkommen, um von Ihrer Datei zu lesen. Es wird nicht beendet, wenn es das Dateiende erreicht, wartet jedoch auf weitere Daten, die an die Datei angehängt werden.

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

Da tail -f nicht verlässt nicht, sollte youtube-dl weiterhin Dateinamen von stdin und nie Ausgang zu lesen.

Verwandte Themen