Youtube API v3 返回的结果少于请求的结果

xSt*_*ler 1 php youtube api

我正在使用 YouTube API 请求一组视频,我将 maxResults 设置为 50,在返回的对象中,我得到以下信息:[totalResults] => 271 [resultsPerPage] => 50。一切正常,但仅对象拥有 3 个视频。当我使用具有更多结果的搜索词时,它确实显示了更多但仍然不是它应该显示的 50,只有当返回大量视频时(比如 1000+)然后我在对象中得到 50,这里发生了什么?

这是我的请求代码:

$searchResponse = $youtube->search->listSearch('id,snippet', array(
'q' => "Let's Play The Legend of Zelda",
'maxResults' => 50,
'type' => 'video',
'videoEmbeddable' => 'true',
'publishedAfter' => date("Y-m-d\TH:i:sP",strtotime('-2 days')),
'videoDuration' => 'short',
'videoDefinition' => 'high',
'order' => 'viewCount',
));
Run Code Online (Sandbox Code Playgroud)

这是我返回的对象:

Array
(
    ...
    [pageInfo] => Array
        (
            [totalResults] => 972
            [resultsPerPage] => 50
        )
    [items] => Array
        (
            [0] => Array
            ...
            [7] => Array
        )
)
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它只有 8 个视频,而它有 972 个结果,应该给我 50 个。

bar*_*ell 5

这是 YouTube API 的问题。该totalResults值可能返回不准确的数字,不应用于检查响应中有多少结果。

问题 - API 成员回复

不幸的是,这是一个已知问题,总的来说,我建议将 totalResults 视为一个非常粗略的指南,并确保您不会围绕它构建任何分页逻辑。响应中 nextPageToken 的存在/不存在应该是指示是否有其他可用结果的唯一因素。

来源:https : //code.google.com/p/gdata-issues/issues/detail?id=6125&can=1

在这种情况下你可以做的是使用count()函数来检查你有多少项目。