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

时间:2016-09-21 02:07:30

标签: python youtube youtube-dl

我一直在尝试下载我所拥有的网址(YouTube视频)列表的缩略图。

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

     import os

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

像这样,我可以下载缩略图,但我也被迫下载了YouTube视频。

我如何才能下载缩略图?

4 个答案:

答案 0 :(得分:5)

您可以简单地将--skip-download添加到您的代码中,它将正常工作。像这样:

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

答案 1 :(得分:1)

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)

答案 2 :(得分:0)

看起来像传递--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)

希望这有帮助!

答案 3 :(得分:0)

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

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