YouTube API返回带有空列表的nextPageToken

时间:2018-07-04 19:04:54

标签: python youtube-api youtube-data-api

此问题与YouTube API 500-1000 meaningful results question无关。我认为YouTube API nextPageTokens起作用的方式是,一旦没有更多结果可返回,它们将为null。但是,我看到有返回的结果开头,但是有时即使只有8个项目(对于单个请求,maxResults = 50)之后,它也会包含nextPageToken,但这只会返回一个空的“项目”列表。随后的nextPageToken导致更多的空列表,直到达到1000个最大值,然后nextPageToken变为null。

还涉及的是page_info ['totalResults']显示为1000000,但在许多情况下返回的值小于200。

所以可能会发生:
  -发出初始请求,获得50个结果
  -查询nextPageToken,获取另外50个结果,以及nextPageToken
  -查询nextPageToken,获得另外8个结果和nextPageToken
  -查询nextPageToken,得到一个空列表和nextPageToken
  -查询nextPageToken,得到一个空列表和nextPageToken
  -等。

这正常吗?还是我必须寻找部分“项目”列表来确定结果是否完成?

1 个答案:

答案 0 :(得分:0)

首先, totalResults 是一个近似值。

As written in docs

结果集中的结果总数。请注意,该值是近似值,可能并不代表精确值。另外,最大值为1,000,000。 您不应使用此值创建分页链接。而是使用nextPageToken和prevPageToken属性值来确定是否显示分页链接。

因此,这可能是应用任何过滤器之前的结果计数(只是推测)。

现在有关 nextPageToken 空项目

关于https://issuetracker.google.com上他们的怪异行为,有很多未解决的问题 他们正在努力修复它们。 see one of them

就像Youtube尝试通过估算来优化每个搜索请求的CPU服务器时间,或者可能是要从您所在的地区限制内容(例如),或者是由于在获取nextPagetoken之后满足了某些其他条件。

这正常吗?还是我必须寻找部分“项目”列表来确定结果是否完成?

IMO暂时是,

可能的实现:

  1. 只要有nextPageToken可用,就继续进行连续调用。 推荐这样做。

  2. 在一些API调用之后,如果项目为空,则无需进行API调用。 对于分页实现中存在错误的当前情况,可以认为这是有效的。但是不可靠。