如何使用 youtube-dl 只下载缩略图?

新手上路,请多包涵

我一直在尝试下载我拥有的 URL(youtube 视频)列表的缩略图。

我一直在使用 youtube-dl,到目前为止我已经解决了这个问题:

      import os

     with open('results.txt') as f:
          for line in f:
              os.system("youtube-dl " + "--write-thumbnail " + line)

像这样我可以下载缩略图,但我也不得不下载 youtube 视频。

我怎样才能下载缩略图?

原文由 TheOlDirtyBastard 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 497
2 个回答

看起来传递 –list-thumbnails 会将 url 返回到缩略图图像,但它只会在调用 os.system() 时输出到屏幕。

以下不是最漂亮的,但它是一个使用子进程将 youtube-dl 的输出转换为字符串、解析它以获取 url 并使用请求下载的快速工作示例:

 import re
import requests
import subprocess

with open('results.txt') as f:
    for line in f:
        proc = subprocess.Popen(['youtube-dl', '--list-thumbnails', line], stdout=subprocess.PIPE)
        youtubedl_output, err = proc.communicate()
        imgurl = re.search("(?P<url>https?://[^\s]+)", youtubedl_output).group('url')
        r = requests.get(imgurl)
        if r.status_code == 200:
            with open(imgurl.split('/')[4] + '.jpg', 'wb') as file:
                for chunk in r.iter_content(1024):
                    file.write(chunk)

希望这有帮助!

原文由 Casey Wireman 发布,翻译遵循 CC BY-SA 3.0 许可协议

您只需将 –skip-download 添加到您的代码中,它就可以正常工作。像这样:

 with open('urls.txt') as f:
for line in f:
    os.system("youtube-dl "+"--write-thumbnail "+"--skip-download "+line)

原文由 Nicholas A. Randall 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏