27

我需要知道 YouTube 数据 API v3 中的等效请求,因为此 v2 请求用于检索所有新订阅视频。

https://gdata.youtube.com/feeds/api/users/default/newsubscriptionvideos

我还没有看到任何像 v2 版本的请求一样简单干净的请求

4

3 回答 3

26

您可以使用 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

于 2014-05-12T22:47:41.777 回答
7

没有确切的等价物,但您可以接近

youtube.activities.list(part=”snippet”, home=true)

然后用snippet.type = upload过滤那个

于 2013-10-28T18:11:54.480 回答
3

对于任何有兴趣“今天”检索新上传的视频的人,比如它是如何完成的/feed/subscriptions,请使用“搜索 API”(链接)。

在这种情况下,它需要 2 个 API。搜索 API 和订阅 API(链接

  1. 使用订阅 API 获取频道 ID
  2. 对于每个频道 ID,使用带有channelIdpublishedAfterpublishedBefore参数的搜索 ID。
  3. 然后过滤掉具有items.length == 0.

那么现在,您可以仅过滤订阅频道上传的最新视频。


编辑:搜索 API 需要 100 个配额。:

调用此方法的配额成本为 100 个单位。

播放列表项 API 需要 3 个配额:

除了指定资源部分的成本外,对该方法的调用还有 1 个单位的配额成本。

所以......从“频道API”缓存上传播放列表ID并使用播放列表要便宜得多。

或者为了能够通过搜索 API 等发布日期进行过滤,请使用具有publishedBeforepublishedAfter参数的活动 API。

于 2019-07-27T15:15:13.537 回答