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

The*_*ard 3 python youtube 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)
Run Code Online (Sandbox Code Playgroud)

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

如何下载缩略图?

kdm*_*ray 11

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

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


小智 7

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

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


Cas*_*man 0

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

以下不是最漂亮的,但它是一个快速工作示例,使用 subprocess 将 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)
Run Code Online (Sandbox Code Playgroud)

希望这有帮助!