【问题标题】:Youtube python: get thumbnailYoutube python:获取缩略图
【发布时间】:2011-06-03 14:53:30
【问题描述】:

有没有一种简单的方法可以从 youtube 条目对象 gdata.youtube.YouTubeVideoEntry 中获取默认缩略图?

我尝试了 entry.media.thumbnail,但这给了我四个缩略图对象。我可以一直相信有四个吗?我可以知道哪个默认缩略图也会出现在 youtube 搜索页面上吗?我怎样才能得到那个?还是我必须更改其他之一?

当我知道我使用的 video_id 时:

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

因此,获取 video_id 也会有所帮助。

我真的必须解析其中一个 url 才能获得 video_id 吗?他们不直接提供这些信息似乎很奇怪。

【问题讨论】:

    标签: python youtube thumbnails


    【解决方案1】:

    您可以将视频 id 放到一个特殊的 url:

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

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

    【讨论】:

    • 清洁解决方案。在我的情况下,网址在模型内。所以写了一个属性来返回缩略图。
    【解决方案2】:

    这是从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' 等固定模式会为您提供缩略图网址。您应该从视频条目中获取缩略图 URL。

    编辑:要在缩略图列表中首先获取“default.jpg”缩略图,您应该查询 YouTube API 的第 2 版(通过将额外的“?v=2”参数附加到提要网址)。我更新了示例以明确这一点。

    【讨论】:

    • 谢谢,但我不认为这是正确的:在 youtube 中搜索“尽量不要笑或笑!哈哈!”它在两个杯子里展示了两只猫。这与:i4.ytimg.com/vi/I_6UTGzgOnU/default.jpg 相同,但与第一个缩略图不同,即:i.ytimg.com/vi/I_6UTGzgOnU/2.jpg
    • 啊,我知道版本了。不幸的是,根本不指定 url(或版本)。我使用 youtube 的 Python API: yt_service = gdata.youtube.service.YouTubeService() query = gdata.youtube.service.YouTubeVideoQuery() 。 ...将搜索词添加到查询和其他查询参数。 . feed = yt_service.YouTubeQuery(query) 我没有办法告诉它使用哪个版本。你碰巧知道吗?
    • 为了包含版本参数 "v=2" 并符合新的 API,您必须根据 code.google.com/intl/en/apis/youtube/2.0/migration.html 迁移当前的 query.ToUri()(不幸的是,如前所述doc,Python YouTube API 客户端尚未更新到版本 2)。然后,使用:xml = service.Query(uri).ToString() 获取生成的 XML。最后,使用feed = gdata.youtube.YouTubeVideoFeedFromString(xml) 获取提要。其余的,你知道的。 PS:没有最新的 Python 客户端来查询 YouTube 真的很糟糕! :P
    【解决方案3】:

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

    "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"
    

    【讨论】:

      猜你喜欢
      • 2014-08-05
      • 2011-10-09
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 2017-02-11
      • 2013-09-11
      • 2013-09-19
      • 2020-08-27
      相关资源
      最近更新 更多