检索 YouTube v3 API 中的所有新订阅视频
Posted
技术标签:
【中文标题】检索 YouTube v3 API 中的所有新订阅视频【英文标题】:Retrieving all the new subscription videos in YouTube v3 API 【发布时间】:2013-11-07 13:54:27 【问题描述】:我需要知道 YouTube Data API v3 中与此 v2 请求相同的请求,以检索所有新订阅视频。
https://gdata.youtube.com/feeds/api/users/default/newsubscriptionvideos
我还没有见过任何像v2版本的reques一样简单干净的请求
【问题讨论】:
【参考方案1】:您可以使用 Youtube V3 API 检索此信息,但效率极低:
首先从用户名中获取频道 ID(一个请求)。 现在获取频道的订阅(可批处理 - 每 50 个订阅一个请求)。 现在获取每个订阅频道的播放列表(可批处理 - 每 50 个订阅者一个请求)。 获取每个频道的“上传”系统播放列表的最新播放列表项。 (每个子请求一个)。 获取与每个 playlistItem 相关的视频(可批量 - 一次请求 50 个 playlistItems)。您现在可以按发布日期对视频进行排序并打印最新的。
如果您有 100 个订阅并从每个频道获取 5 个视频,这将产生 114 个 API 请求并使用大约 500 个配额单位(每日限制为 5000 万个单位)。如果不并行化 API 调用,也需要大约 2 分钟才能运行。
与使用活动相比,这种方法确实有几个好处:
您可以为任何具有公共帐户设置的用户执行此操作,而不仅仅是经过身份验证的用户,因此在这方面它与 V2 API 一样工作。 不会像 Youtube 主页那样随机丢失视频。提供完整的 Python 实现:https://github.com/ali1234/ytsubs
【讨论】:
您也可以使用search
来避免获取会导致请求减少的播放列表和播放列表项。但是,这种方法会导致配额消耗量激增。 Alistair 的方法在这个时候似乎仍然是最好的。
这一切都是因为 Google 弃用了 activities
列表 YouTube API 中的 home
参数。
也许这可行:1) 通过 yt api 获取用户订阅 2) 获取所有频道 ID 并提出请求:youtube.com/feeds/videos.xml?channel_id= 3) 按日期订购 4) ???? 5) $$$ 利润 $$$【参考方案2】:
没有完全等价的,但你可以接近
youtube.activities.list(part=”snippet”, home=true)
然后用snippet.type = 上传过滤那个
【讨论】:
是否有过滤请求本身的 sn-p.type = upload 的方法? 正在进行更新。你可以从这里追踪它:code.google.com/p/gdata-issues/issues/detail?id=3946 非常感谢!我会遵守的。 此解决方案似乎无法检索所有最后上传的视频(我错过了其中一些)home
现已弃用。【参考方案3】:
对于有兴趣在“今天”检索新上传的视频(例如在 /feed/subscriptions
中的操作方式)的任何人,请使用“搜索 API”(link)。
在这种情况下,它需要 2 个 API。搜索 API 和订阅 API (link)
-
使用订阅 API 获取频道 ID
对于每个频道 ID,使用带有
channelId
、publishedAfter
和 publishedBefore
参数的搜索 ID。
然后过滤掉有items.length == 0
的结果。
那么现在,您可以只过滤订阅频道上传的最新视频。
编辑:搜索 API 需要 100 个配额。:
调用此方法的配额成本为 100 个单位。
播放列表项 API 需要 3 个配额:
除了指定资源部分的成本外,对该方法的调用还有 1 个单位的配额成本。
所以...从“频道 API”缓存上传的播放列表 ID 并使用播放列表要便宜得多。
或者要能够通过搜索 API 等发布日期进行过滤,请使用具有 publishedBefore
和 publishedAfter
参数的活动 API。
【讨论】:
以上是关于检索 YouTube v3 API 中的所有新订阅视频的主要内容,如果未能解决你的问题,请参考以下文章
使用新的 YouTube API v3 解析 YouTube 订阅者数量
使用新的 YouTube API v3 解析 YouTube 订阅者数量