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

How can I download just thumbnails using 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 视频。

我怎样才能只下载缩略图?

看起来传递 --list-thumbnails 会 return 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)

希望对您有所帮助!

您只需将 --skip-download 添加到您的代码中即可正常运行。像这样:

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

基于其他答案,您还可以指定 -a--batch-file 标志以提供要从中导入的文件列表,这会稍微简化代码:

youtube-dl -a urls.txt --write-thumbnail --skip-download

Python 3.6+

import os

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

Python 2.7(已弃用)

import os

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