php - YouTube数据API返回的结果多于maxResults

标签 php youtube youtube-api youtube-data-api

我创建了这个PHP脚本,该脚本从youtube channel 中输出指定数量的最新youtube视频。我将maxResults设置为10,但它返回了数百个结果。请仔细阅读代码并提供帮助。

<?php

$API_Url = 'https://www.googleapis.com/youtube/v3/';
$API_Key = '...';
$channelId = 'UCX6OQ3DkcsbYNE6H8uQQuVA';

$parameter = [
    'id'=> $channelId,
    'part'=> 'contentDetails',
    'key'=> $API_Key
];
$channel_URL = $API_Url . 'channels?' . http_build_query($parameter);
$json_details = json_decode(file_get_contents($channel_URL), true);

$playlist=$json_details['items'][0]['contentDetails']['relatedPlaylists']['uploads'];

$parameter = [
    'part'=> 'snippet',
    'playlistId' => $playlist,
    'maxResults'=> 10,
    'key'=> $API_Key
];
$channel_URL = $API_Url . 'playlistItems?' . http_build_query($parameter);
$json_details = json_decode(file_get_contents($channel_URL), true);


$my_videos = [];
foreach($json_details['items'] as $video){
    //$my_videos[] = $video['snippet']['resourceId']['videoId'];
    $my_videos[] = array( 'v_id'=>$video['snippet']['resourceId']['videoId'], 'v_name'=>$video['snippet']['title'] );
}

while(isset($json_details['nextPageToken'])){
    $nxt_page_URL = $channel_URL . '&pageToken=' . $json_details['nextPageToken'];
    $json_details = json_decode(file_get_contents($nxt_page_URL), true);
    foreach($json_details['items'] as $video)
        $my_videos[] = $video['snippet']['resourceId']['videoId'];
}

print_r($my_videos);

//foreach($my_videos as $video){
    //if(isset($video)){

        //echo '<a href="https://www.youtube.com/watch?v='. $video['v_id'] .'">
                    //<div>'. $video['v_name'] .'</div>
            //</a><br><br><br>';
    //}
//}

而且它返回的额外结果甚至没有标题或ID。亲自查看图片

这是屏幕截图:
enter image description here

最佳答案

收到大量项目的原因是,在第一个请求之后,您会遇到一个while循环,该循环会向YouTube API发出下一页数据的后续请求,直到在响应有效负载中找不到nextPageToken为止,这意味着您可以从1到数十或数百个请求,具体取决于可用的数据页数,每个请求带回最多10个其他项。

每个单独的请求将按您指定的时间一次带回10个项目,但累计总数显然比这要多得多。由于您只对前10个感兴趣,因此只需删除while块即可阻止代码在第一个之后发出更多请求,因此不会将它们添加到数组中。

关于php - YouTube数据API返回的结果多于maxResults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57707702/

相关文章:

YouTube Api Explorer 用作 ContentOwner : forbidden

php - 按标题搜索顺序youtube api

javascript - youtube-dl nodejs 有问题 错误 : spawn EACCES

youtube - YouTube播放器如何获取搜索栏的图像?

php - 匹配php中单独列表上的值

php - 两个 Ajax 调用不能同时工作 (heroku)

php - 如何阻止 PHP 在文件开头添加 LF 前缀

php - Paypal 定期付款和计费周期

youtube - YouTube API html5视频

java - 使用java通过android应用程序在youtube上上传视频