【问题标题】:Simple queue for youtube-dl in the Linux shellLinux shell 中 youtube-dl 的简单队列
【发布时间】:2011-04-07 16:04:55
【问题描述】:
youtube-dl 是一个 Python 脚本,允许下载 YouTube 视频。它支持批量下载选项:
-a FILE, --batch-file=FILE
包含要下载的 URL 的文件('-' 表示标准输入)
我想设置某种队列,这样我就可以简单地将 URL 附加到文件并让youtube-dl 处理它们。目前,它不会从批处理文件中删除文件。我看到了“-”标准输入的选项,不知道我是否可以利用它来发挥自己的优势。
实际上,我想将youtube-dl 作为某种形式的守护进程运行,它将检查队列文件并下载包含的文件名。
我该怎么做?
【问题讨论】:
标签:
python
shell
youtube
daemon
【解决方案1】:
tail -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])
希望对你有帮助,
开心看视频
;)
注意:由于代码重组,此补丁将不再有效。有兴趣看看这是否可以添加到上游代码中。
【解决方案2】:
您也许可以使用tail -f 来读取您的文件。到达文件末尾时它不会退出,而是会等待更多数据附加到文件中。
>video.queue # erase and/or create queue file
tail -f video.queue | youtube-dl -a -
由于tail -f 没有退出,youtube-dl 应该继续从标准输入读取文件名并且永不退出。