首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux shell中youtube-dl的简单队列

Linux shell中youtube-dl的简单队列
EN

Stack Overflow用户
提问于 2010-09-03 03:43:57
回答 2查看 8.6K关注 0票数 9

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

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

我想设置某种队列,这样我就可以简单地将URL附加到文件中,并让youtube-dl处理它们。当前,它不会从批处理文件中删除文件。我看到了“-”的选项,不知道我是否可以利用它来占便宜。

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

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-03 05:40:45

因为脚本一次读取所有输入,尾巴-f将无法工作。

如果您修改脚本以执行批处理文件的连续读取,它将工作。

然后简单地按以下方式运行脚本:

代码语言:javascript
运行
复制
% ./youtube-dl -a batch.txt -c

当您将一些数据附加到batch.txt中时,例如:

代码语言:javascript
运行
复制
% echo "http://www.youtube.com/watch?v=j9SgDoypXcI" >>batch.txt

脚本将开始下载附加的视频到批处理。

这是您应该应用于最新版本的“youtube-dl”的修补程序:

代码语言:javascript
运行
复制
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])

希望能帮上忙,看视频快乐;)

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

票数 5
EN

Stack Overflow用户

发布于 2010-09-03 03:50:32

您可以通过使用tail -f从您的文件中读取数据而不受影响。当它到达文件结束时,它不会退出,而是会等待更多的数据被附加到文件中。

代码语言:javascript
运行
复制
>video.queue  # erase and/or create queue file
tail -f video.queue | youtube-dl -a -

由于tail -f不退出,所以youtube-dl应该继续从stdin读取文件名,并且永远不要退出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3632919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档