Linux shell中youtube-dl的简单队列

时间:2010-09-03 03:43:57

标签: python shell youtube daemon

youtube-dl是一个允许用户下载YouTube视频的Python脚本。它支持批量下载选项:

  

-a FILE, --batch-file=FILE
  包含要下载的URL的文件(' - '代表stdin)

我想设置某种队列,这样我就可以简单地将URL附加到文件中并让youtube-dl处理它们。目前,它不会从批处理文件中删除文件。我看到' - 'stdin的选项,不知道我是否可以利用这个优势。

实际上,我想运行youtube-dl作为某种形式的守护进程,它会检查队列文件并下载包含的文件名。

我该怎么做?

2 个答案:

答案 0 :(得分:5)

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

希望它有所帮助, 快乐的视频观看 ;)

注意:由于代码重组,此修补程序将不再有效。有兴趣看看是否可以将其添加到上游代码中。

答案 1 :(得分:1)

您可以使用tail -f从文件中读取内容。它到达文件末尾时不会退出,但会等待更多数据附加到文件中。

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

由于tail -f没有退出,youtube-dl应继续从stdin读取文件名,永不退出。