频道的视频列表中缺少视频

Posted

技术标签:

【中文标题】频道的视频列表中缺少视频【英文标题】:Videos missing from a channel's video list 【发布时间】:2019-01-18 03:54:37 【问题描述】:

我正在尝试检索有关给定 YouTube 频道的所有视频的信息。

这是我的第一个请求:

GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=CHANNEL_ID&maxResults=50&type=video&key=YOUR_API_KEY


  "kind": "youtube#searchListResponse",
  "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/15j9AlxbMtzBhzffpA04ahJgv9g\"",
  "nextPageToken": "CDIQAA",
  "regionCode": "FR",
  "pageInfo": 
    "totalResults": 375,
    "resultsPerPage": 50
  ,
  "items": [
    "... 50 items here ..."
  ]

如您所见,共有 375 个结果。因此,我使用nextPageToken 搜索下一个 50 个视频。

GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=CHANNEL_ID&maxResults=50&pageToken=CDIQAA&type=video&key=YOUR_API_KEY


  "kind": "youtube#searchListResponse",
  "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/7mmGfmqsGmfP8OggZWZVefQ7z6Q\"",
  "nextPageToken": "CGQQAA",
  "prevPageToken": "CDIQAQ",
  "regionCode": "FR",
  "pageInfo": 
    "totalResults": 375,
    "resultsPerPage": 50
  ,
  "items": [
    "... 28 more items here ..."
  ]

此响应中只有 28 项。此外,如果我查询下一页:

GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=CHANNEL_ID&maxResults=50&pageToken=CGQQAA&type=video&key=YOUR_API_KEY

这一次,根本没有任何物品。


  "kind": "youtube#searchListResponse",
  "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/XKJQFk8Z_J6XraQ0mVCRtVWnSYc\"",
  "nextPageToken": "CJYBEAA",
  "prevPageToken": "CGQQAQ",
  "regionCode": "FR",
  "pageInfo": 
    "totalResults": 375,
    "resultsPerPage": 50
  ,
  "items": [
  ]

是什么导致了这种行为?我的请求有问题吗?

【问题讨论】:

为了重现问题,了解在测试中导致此问题的 CHANNEL_ID 值可能很有用。我刚刚尝试通过 apis-explorer 页面和channelId: "UCsGakFIbOsj-fgPFLf1QlQA" 没有任何问题。同样在我的情况下,我已经使用 OAuth 2.0 授权请求。 这里是我要查询的频道 ID:UCRVDPcrF_LTJo8u0bkzUL9A,我一直在使用 API 密钥授权请求,尽管我认为它不应该有所作为。 只是为了提供更多信息,我确认在报告的频道中:UCRVDPcrF_LTJo8u0bkzUL9A 让我重现该问题,而对于相同的其他频道,例如 UCsGakFIbOsj-fgPFLf1QlQA 似乎不存在此问题 【参考方案1】:

YouTube Data API v3 你应该:

第 1 步:获取您频道的上传播放列表

GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=UCRVDPcrF_LTJo8u0bkzUL9A&key=YOUR_API_KEY

json "kind": "youtube#channel", "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/8HOHPc1ZO5cOiePp8nFHwKA99HM\"", "id": "UCRVDPcrF_LTJo8u0bkzUL9A", "contentDetails": "relatedPlaylists": "uploads": "UURVDPcrF_LTJo8u0bkzUL9A", "watchHistory": "HL", "watchLater": "WL" 您频道的上传播放列表是UURVDPcrF_LTJo8u0bkzUL9A

第 2 步:使用 youtube.playlistItems.list 通过指定您频道的uploads 播放列表的playlistId 来获取您频道中上传的所有视频

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&pageToken=WHEN_YOU_HAVE_A_PAGETOKEN_PUT_IT_HERE&playlistId=UURVDPcrF_LTJo8u0bkzUL9A&key=YOUR_API_KEY


参考问题的答案:

youtube-api-v3-list-uploaded-videos how-do-i-obtain-a-list-of-all-videos-in-a-channel-using-the-youtube-data-api-v3

关于Search: list API 的行为

如此处所述:https://developers.google.com/youtube/v3/docs/search/list 关于搜索结果属性pageInfo.totalResults我逐字引用:

结果集中的结果总数。请注意 值是近似值,可能不代表精确值。在 另外,最大值为1,000,000。

您不应使用此值来创建分页链接。相反,使用 nextPageToken 和 prevPageToken 属性值确定 是否显示分页链接。

另外,通过一些调查,我确实测试了结果中“丢失”的视频,正如您所指出的,但是,当请求中明确指定可选参数 q 时,结果中会出现视频,显然仅当相关视频的数据可以满足指定的过滤器值时。

【讨论】:

以上是关于频道的视频列表中缺少视频的主要内容,如果未能解决你的问题,请参考以下文章

从 youtube 频道获取视频列表

使用 JSON 从 YouTube 频道获取视频列表

YouTube API频道的视频列表

如何获取上传到多个 YouTube 频道的最新视频列表?

Youtube - 如何获取 youtube 频道中的视频列表并将其显示为列表?

如何将所有 Youtube 频道视频嵌入网站..?