如何使用 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)
我一直在尝试下载我拥有的 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)