【问题标题】:YouTube API: Get full playlistYouTube API:获取完整的播放列表
【发布时间】:2013-12-15 19:28:36
【问题描述】:

我正在尝试理解递归 :) 好吧,特别是使用 Google 的 PHP 客户端库获取完整的 YouTube 播放列表。

这是我在课堂上名为 YTFunctions 的函数。它首先被一个有效的、经过身份验证的 YouTube_Service 对象和一个 playlistId 调用。然后,理论上它应该一遍又一遍地调用自己,只要 PlaylistItems 响应有一个 nextPageToken 然后将其附加到它的输出中,该输出应该包含播放列表中包含的所有对象(视频)。由于某种原因,它只返回一个空数组。

public static function getFullPlaylistByID($youtube, $playlistId, $pageToken) {
    $params = array(
        'maxResults' => 50,
        'playlistId' => $playlistId,
    );
    if ($pageToken !== false) {
        $params['pageToken'] = $pageToken;
    }
    $playlistResponse = $youtube->playlistItems->listPlaylistItems('snippet,contentDetails', $params);
    error_log(count($playlistResponse['items']));
    $playlistItems = $playlistResponse['items'];
    if (isset($playlistResponse['nextPageToken'])) {
        $playlistItems = array_merge($playlistItems, YTFunctions::getFullPlaylistByID($youtube,$playlistId, $playlistResponse['nextPageToken']));
    } else {
    }
    return $playlistItems;
}

我显然在这里遗漏了一些东西,任何帮助将不胜感激。

托比亚斯·蒂佩

【问题讨论】:

    标签: php youtube youtube-api google-api-php-client


    【解决方案1】:

    这里是我的班级,它将获得所有的 playlistItems

    <?php
    class yt{
        public $DEVELOPER_KEY = '{DEVELOPER_KEY}';
        public $client;
        public $youtube;
    
        public function __construct(){
            $this->client = new Google_Client();
            $this->client->setDeveloperKey($this->DEVELOPER_KEY);
            $this->youtube = new Google_YoutubeService($this->client);      
        }
    
        public function getPlaylistItems($playlist, $maxResults, $nextPageToken = ''){
            $params = array(
                'playlistId' => $playlist,
                'maxResults' => $maxResults,
            );
    
            // if $nextPageToken exist
            if(!empty($nextPageToken)){
                //insert $nextPageToken value into $params['pageToken'] 
                $params['pageToken'] = $nextPageToken;
            }
    
            $youtubeFeed = $this->youtube->playlistItems->listPlaylistItems('id,snippet,contentDetails', $params);
            // function for looping our feed and entry
            $this->setFeed($youtubeFeed);
    
            //check if nextPageToken are exist 
            if(!empty($youtubeFeed['nextPageToken'])){
                $insert = $this->getPlaylistItems($playlist, $maxResults, $youtubeFeed['nextPageToken']);
                // return to function if nextPageToken are exist
                return $insert;
            }
    
        }
    }
    
    $yt = new yt();
    
    ?>
    

    然后使用我们的类

    $yt->getPlaylistItems('PL0823049820348','25');
    

    【讨论】:

      猜你喜欢
      • 2011-10-27
      • 2017-08-19
      • 2015-10-18
      • 2017-11-01
      • 2018-02-19
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多