YouTube Data API playlistItems:List 最多只返回 100 个数据项 - 或 2 页数据,在 7 月 16 日正常工作

D_C*_*oll 5 youtube api

我正在使用 YouTube 数据 API v3 - 今天 playlistItems:List 只返回最多 100 个数据项或所有视频播放列表的 2 页数据(UU + 频道 ID 的最后 22 个字符)。我相信在第一页之后的下一页标记也可能不正确,因为它在第三页上显示了错误的上一页标记。

UPDATE: Further testing shows that the playlistItems:List api works correctly 
for some channels -

All video playlist - UU4mLlRa_dezwvytudo9s1sw works

https://developers.google.com/youtube/v3/docs/playlistItems/list?apix=true&apix_params=%7B%22part%22%3A%5B%22id%2Csnippet%22%5D%2C%22maxResults%22%3A50%2C%22playlistId%22%3A%22UU4mLlRa_dezwvytudo9s1sw%22%7D


but at least two others do not work correctly and only return 100 items:

UUGGZ_POGmIWG1pQXTDzQv-g
UUwD4x63A9KC7Si2RuSfg-SA

Run Code Online (Sandbox Code Playgroud)

这已经正常工作了好几年。它在 7 月 16 日正常工作。同样的行为发生在 API Explorer 中。

API Explorer 示例和所有视频播放列表 UUwD4x63A9KC7Si2RuSfg-SA 的结果:

https://developers.google.com/youtube/v3/docs/playlistItems/list?apix=true&apix_params=%7B%22part%22%3A%5B%22id%2Csnippet%22%5D%2C%22maxResults%22%3A50%2C%22pageToken%22%3A%22CDIQAA%22%2C%22playlistId%22%3A%22UUwD4x63A9KC7Si2RuSfg-SA%22%7D

first page of results:

{
  "kind": "youtube#playlistItemListResponse",
  "etag": "oE9yCl2NBCpgzQbX82RR1jjqkco",
  "nextPageToken": "CDIQAA",
  "items": [


second page - page token CDIQAA:

{
  "kind": "youtube#playlistItemListResponse",
  "etag": "w8PJ0yDadTWJfwSP2CWcODoMzuk",
  "nextPageToken": "CGQQAA",
  "prevPageToken": "CDIQAQ",
  "items": [

third page - page token CGQQAA:

{
  "kind": "youtube#playlistItemListResponse",
  "etag": "AQSyYYKWgu50RiGPA10TjRTE7Ys",
  "nextPageToken": "CJYBEAA",
  "prevPageToken": "CGQQAQ",    
  "items": [],                  <---- NO DATA, but 521 items still to show
  "pageInfo": {
    "totalResults": 621,
    "resultsPerPage": 50
  }
}
Run Code Online (Sandbox Code Playgroud)

可能的解决方法

  1. 使用 YouTube 数据 API v3 - search:List 指定频道 ID、无查询和结果过滤器类型 = 视频。这在配额方面很昂贵,每个查询/50 个结果的页面需要 100 个配额。但是,这个 API 现在似乎最多可以为一个频道提供大约 300 个左右的结果。

  2. 使用 YouTube 数据 API v3 - playlistItems:List 和频道所有者授权的 OAuth 令牌,而不是公共 API 密钥。这和以前一样工作,没有 100 项限制。但是,这意味着如果没有所有者的 OAuth 令牌,您将无法获得频道或播放列表的视频列表(超过 100 个视频)。

Old*_*Pro 1

这是 YouTube API 中的一个已知错误。该错误的公开确认和跟踪位于:https ://issuetracker.google.com/issues/161628022

编辑:似乎已于 2020-07-24 修复

也有一些重复的。我发现

也许最好只是等待它被修复。它只开放/分配了一天左右,因此可能会很快得到修复。话又说回来,可能不会。以前也发生过这种情况,花了很长时间才修复。

启发式地,在我看来,这是对未列出的播放列表的限制,也就是说,playlists.list给定channelId.

我检查并确认,即使使用较小的页面大小,也只会为未列出的播放列表返回前 100 个播放列表项目(我只查看“上传”播放列表,因为我手边没有很多大的未列出的播放列表),并使用页面大小共 50 个,列出的播放列表将返回所有项目(播放列表PLC474234E124B5213返回所有 102 个项目,播放列表FLSC1HqVmTaE4Shn32ihbC7w返回所有 136 个项目)。根据我的经验,YouTube API 中的此类错误很少有解决方法。不值得花费大量时间。现在就接受限制,(向任何关心的人)记录它是一个已知的错误/限制,然后继续前进,就好像它是一个记录的限制,并有一个待处理的功能请求来删除该限制。