Youtube python:获取缩略图

4 投票
3 回答
8517 浏览
提问于 2025-04-16 09:24

有没有简单的方法可以从一个YouTube视频对象 gdata.youtube.YouTubeVideoEntry 中获取默认的缩略图?

我试过用 entry.media.thumbnail,但那样会得到四个缩略图对象。我可以相信总是会有四个吗?我怎么知道哪个是默认的缩略图,也就是在YouTube搜索页面上会显示的那个?我该怎么获取这个缩略图?还是说我需要修改其他的缩略图?

当我知道视频ID的时候,我会用:

http://i4.ytimg.com/vi/{{video_id}}/default.jpg

所以,获取视频ID也是很有帮助的。

我真的需要解析其中一个网址才能得到视频ID吗?感觉他们不直接提供这个信息有点奇怪。

3 个回答

0

获取高质量缩略图的最简单方法是:

"https://img.youtube.com/vi/[vid_id]/maxresdefault.jpg"

你可以通过下面的方式找到视频的ID:

"https://www.youtube.com/watch?v=[this is video id]"

最后:

url = ....
imgUrl = f"https://img.youtube.com/vi/{url[url.find('watch?v='):]}/maxresdefault.jpg"
3

这里教你如何从一个 gdata.youtube.YouTubeVideoEntry 对象中获取默认的缩略图:

import gdata.youtube.service

service = gdata.youtube.service.YouTubeService()
feed_url = 'http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed?v=2'
feed = service.GetYouTubeVideoFeed(feed_url)
entry = feed.entry[0] # pick most viewed video as sample entry

thumbnail = entry.media.thumbnail[0].url
    # will be an URL like: 'http://i.ytimg.com/vi/%(video_id)s/default.jpg'
    # when querying YouTube API version 2 ('?v=2' at the end of feed URL)

你不能指望总是有4个缩略图(不过这种情况几乎总是成立)。默认的缩略图是缩略图列表中的第一个。

你还可以通过 entry.id.text 获取视频的链接,并从末尾提取出实际的视频ID,但你不能假设像 'http://i4.ytimg.com/vi/%(video_id)s/default.jpg' 这样的固定格式能给你缩略图的链接。你应该从视频条目中获取缩略图的链接。

补充:要获取列表中第一个“default.jpg”缩略图,你需要查询YouTube API的版本2(在链接后面加上一个额外的“?v=2”参数)。我更新了示例以便更清楚。

6

你可以把视频的ID放到一个特定的网址里:

thumnail_url = "http://img.youtube.com/vi/%s/0.jpg" % video_id

或者你可以创建一个模板过滤器:https://djangosnippets.org/snippets/2234/

撰写回答