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)
看起来传递 --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)
希望这有帮助!
| 归档时间: |
|
| 查看次数: |
8817 次 |
| 最近记录: |