【问题标题】: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 似乎不存在此问题

标签: youtube google-api youtube-api youtube-data-api


【解决方案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}


参考问题的答案:


关于Search: list API 的行为

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多