Простая очередь для youtube-dl в оболочке Linux - PullRequest
8 голосов
/ 03 сентября 2010

youtube-dl - это скрипт на Python, позволяющий загружать видео с YouTube. Поддерживает возможность пакетной загрузки:

-a FILE, --batch-file=FILE
файл, содержащий URL для загрузки ('-' для стандартного ввода)

Я хочу настроить какую-то очередь, чтобы я мог просто добавить URL-адреса в файл и обработать их youtube-dl. В настоящее время он не удаляет файлы из командного файла. Я вижу опцию '-' stdin и не знаю, смогу ли я использовать это в своих интересах.

По сути, я хотел бы запустить youtube-dl в качестве некоторой формы демона, который будет проверять файл очереди и загружать содержащиеся в нем имена файлов.

Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 03 сентября 2010

Хвост -f не будет работать, потому что скрипт читает все входные данные сразу.

Он будет работать, если вы измените скрипт для выполнения непрерывного чтения командного файла.

Затем просто запустите скрипт как:

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

Когда вы добавляете некоторые данные в batch.txt, скажите:

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

Сценарий начнет загружать добавленное видео в пакет.

Это патч, который вы должны применить к последней версии "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])

Надеюсь, это поможет, Приятного просмотра видео;)

ПРИМЕЧАНИЕ: из-задля реструктуризации кода этот патч больше не будет работать.Было бы интересно узнать, можно ли это добавить к вышестоящему коду.

1 голос
/ 03 сентября 2010

Возможно, вам удастся использовать tail -f для чтения из вашего файла.Он не завершится, когда достигнет конца файла, но будет ожидать добавления дополнительных данных к файлу.

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

Поскольку tail -f не завершается, youtube-dl должен продолжить чтение имен файловот stdin и никогда не выходите.

...