我已将100个视频上传到我的频道,我需要获取所有视频ID,但我搜索到的地方只有代码,仅列出播放列表中的视频。但我的所有视频都是root。
$channelsResponse = $youTubeService->channels->listChannels('id,contentDetails', array(
'mine' => 'true'));
$searchResponse = $youTubeService->playlistItems->listPlaylistItems('snippet', array(
'maxResults' => 50,
'fields' => 'items(snippet(publishedAt,channelId,title,description,thumbnails(default),resourceId)),pageInfo,nextPageToken'));
echo json_encode($searchResponse['items']['contentDetails']['videoId']);
以上代码从playlist获取视频。我可以从root获取视频。
答案 0 :(得分:1)
没有像root一样的东西,YouTube中的播放列表中都有。我相信你要问的是获取你上传的视频。您的频道中还有一个名为“上传”的播放列表。这就是您的频道上传视频的地方。
您可以在listChannels调用中获取该播放列表的播放列表ID。在回复中,查找contentDetails.relatedPlaylists.uploads。
然后在第二次调用(listPlaylistItems)中,使用该ID设置playlistId
答案 1 :(得分:0)
工作解决方案/例外:
function getSslPage($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
//params
$order = "date";
$part = "snippet";
$channel_id = "UCzocxfp9lrNal14glrFSrng";
$max_results = 50;
$api_key = "YOUR_API_KEY";
$feedurl = 'https://www.googleapis.com/youtube/v3/search?order='.$order.'&part='.$part.'&channelId='.$channel_id.'&maxResults='.$max_results.'&key='.$api_key;
$feed = getSslPage($feedurl);
$feed_arr = json_decode($feed, true);
//print_r($feed_arr);
$items = $feed_arr['items'];
foreach($items as $item) {
if( (isset($item['id']['videoId'])) OR (!empty($item['id']['videoId'])) ) {
echo '<iframe width="420" height="315"
src="http://www.youtube.com/embed/'.$item['id']['videoId'].'?autoplay=0">
</iframe>';
}
}