【问题标题】: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 应该继续从标准输入读取文件名并且永不退出。

    【讨论】:

      猜你喜欢
      • 2018-10-24
      • 2019-03-27
      • 2018-07-03
      • 2015-01-13
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多