2010-09-03 5 views
8

youtube-dl to skrypt w języku Python, który umożliwia pobieranie filmów z serwisu YouTube. Obsługuje opcję pobrania partii:Prosta kolejka dla youtube-dl w powłoce Linux

-a FILE, --batch-file=FILE
plik zawierający adresy URL, aby pobrać („-” dla stdin)

Chcę konfiguracji jakieś kolejki, więc mogę po prostu dołączyć adresy URL plik i przetworzyć je. Obecnie nie usuwa plików z pliku wsadowego. Widzę opcję "-" stdin i nie wiem, czy mogę użyć tego na swoją korzyść.

W efekcie chciałbym uruchomić youtube-dl jako pewną formę demona, która sprawdzi plik kolejki i pobierze zawarte w nim nazwy plików.

Jak mogę to zrobić?

Odpowiedz

4

Ogon -f nie zadziała, ponieważ skrypt odczytuje wszystkie dane wejściowe jednocześnie.

Będzie działać, jeśli zmodyfikujesz skrypt w celu ciągłego odczytu pliku wsadowego.

Następnie wystarczy uruchomić skrypt jako:

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

Po dołączeniu jakieś dane do batch.txt, powiedzieć:

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

Skrypt rozpocznie pobieranie załączone wideo do partii.

Jest to plaster należy zastosować do najnowszej wersji "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]) 

nadzieję, że to pomaga, Szczęśliwy wideo oglądania ;)

UWAGA: Ze względu na restrukturyzację kodu ta poprawka przestanie działać. Byłby zainteresowany, czy można go dodać do kodu źródłowego.

1

Być może będziesz mógł uciec, używając tail -f do czytania z pliku. Nie zostanie zakończone po osiągnięciu końca pliku, ale będzie czekało na dołączenie większej ilości danych do pliku.

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

Od tail -f nie wyjść, youtube-dl powinien kontynuować czytanie nazw plików ze standardowego wejścia i wyjścia nigdy.