我正在使用PHP脚本查找特定用户ID已上传的所有播放列表。问题是脚本没有返回所有播放列表,只返回其中一些播放列表。
我想获取所有播放列表,但并非所有播放列表都被提取。
请在此处查看:Link
这是我的代码(GET ARGUMENT是/ channelname):
<?php
header('Content-Type: text/html; charset=utf-8');
$feedUrl='https://gdata.youtube.com/feeds/api/users/'.$_GET['id'].'/playlists?v=2&alt=json';
$data = json_decode(file_get_contents($feedUrl),true);
$info = $data["feed"];
$entry = $info["entry"];
$nEntry = count($entry);
/* echo "Playlist Name: ".$info["title"]['$t'].'<br/>';
echo "Number of Videos (".$nVideo."):<br/>";*/
$MainFeed=array();
for($i=0;$i<$nEntry;$i++){
$thumbId=split('/',$entry[$i]['media$group']['media$thumbnail'][0]['url'] );
$thumbId=$thumbId[4];
$playList=array(
'title' => $entry[$i]['title']['$t'],
'playlistId' => $entry[$i]['yt$playlistId']['$t'],
'published'=>$entry[$i]['published']['$t'],
'thumbId'=>$thumbId,
'videosCount'=>$entry[$i]['yt$countHint']['$t'],
'videos'=>getVideos($entry[$i]['yt$playlistId']['$t'])
);
array_push($MainFeed,$playList);
//print_r($entry[$i]);
/*
echo "Name: ".$entry[$i]['title']['$t'].'<br/>';
echo 'http://www.youtube.com/playlist?list='.$entry[$i]['yt$playlistId']['$t'].'&feature=plcp'.'<br/>';
echo '<br>$thumbId : '.$thumbId .'<br>';
echo "playlistId: ".$entry[$i]['yt$playlistId']['$t']."<br />";
echo "published: ".$entry[$i]['published']['$t']."<br />";
*/
// break;
}
echo '{ "feed":'.json_encode($MainFeed).'}';
function getVideos($playListId){
$feedUrl='https://gdata.youtube.com/feeds/api/playlists/'.$playListId.'?v=2&alt=json';
$data = json_decode(file_get_contents($feedUrl),true);
$info = $data["feed"];
$entry = $info["entry"];
$nEntry = count($entry);
$PLayListVideos=array();
for($i=0;$i<$nEntry;$i++){
$video = array(
'title' => $entry[$i]['title']['$t'],
'description' => $entry[$i]['media$group']['media$description']['$t'],
'published' =>$entry[$i]['published']['$t'],
'duration'=>$entry[$i]['media$group']['yt$duration']['seconds'],
'videoid'=>$entry[$i]['media$group']['yt$videoid']['$t'],
'favoriteCount'=>$entry[$i]['yt$statistics']['favoriteCount'],
'viewCount'=>$entry[$i]['yt$statistics']['viewCount'],
'numDislikes'=>$entry[$i]['yt$rating']['numDislikes'],
'numLikes'=>$entry[$i]['yt$rating']['numLikes'],
'rating'=>$entry[$i]['gd$rating']['average'],
'max'=>$entry[$i]['gd$rating']['max'],
'min'=>$entry[$i]['gd$rating']['min'] ,
'numRaters'=>$entry[$i]['gd$rating']['numRaters'] ,
'rtsp1'=>$entry[$i]['media$group']['media$content']['1']['url'],
'rtsp2'=>$entry[$i]['media$group']['media$content']['2']['url'],
);
array_push($PLayListVideos,$video);
/*
echo "Name: ".$entry[$i]['title']['$t'].'<br/>';
echo "published: ".$entry[$i]['published']['$t']."<br />";
echo "duration : ".$entry[$i]['media$group']['yt$duration']['seconds'].'<br/>';
echo "videoid : ".$entry[$i]['media$group']['yt$videoid']['$t'].'<br/>';
echo "Image 90 : ".$entry[$i]['media$group']['media$thumbnail'][0]['url'].'<br/>';
echo "Image 180 : ".$entry[$i]['media$group']['media$thumbnail'][1]['url'].'<br/>';
echo "Image 360 : ".$entry[$i]['media$group']['media$thumbnail'][2]['url'].'<br/>';
echo "favoriteCount : ".$entry[$i]['yt$statistics']['favoriteCount'] .'<br/>';
echo "viewCount : ".$entry[$i]['yt$statistics']['viewCount'] .'<br/>';
echo "numDislikes : ".$entry[$i]['yt$rating']['numDislikes'] .'<br/>';
echo "numLikes : ".$entry[$i]['yt$rating']['numLikes'] .'<br/>';
echo "rating : ".$entry[$i]['gd$rating']['average'] .'<br/>';
echo "max : ".$entry[$i]['gd$rating']['max'] .'<br/>';
echo "min : ".$entry[$i]['gd$rating']['min'] .'<br/>';
echo "numRaters : ".$entry[$i]['gd$rating']['numRaters'] .'<br/>';
echo "rtsp1 : ".$entry[$i]['media$group']['media$content']['1']['url'] .'<br/>';
echo "rtsp2 : ".$entry[$i]['media$group']['media$content']['2']['url'] .'<br/>';
*/
//print_r($entry[$i]);
}
return $PLayListVideos;
}
?>
如何进行更改以获取频道中的所有播放列表?
答案 0 :(得分:1)
max-results ...指定应该的最大结果数 包含在结果集中。此参数与...一起使用 start-index参数确定返回哪些结果... 此参数的默认值为25,最大值为50 ...
使用此网址获取前25个视频(明确指定最高结果是一个好主意):
http://gdata.youtube.com/feeds/api/playlists/FLz97F7dMxBNOfGYu3rx8aCw?max-results=25&start-index=1
要获得接下来的25个视频,请指定start-index = 26:
http://gdata.youtube.com/feeds/api/playlists/FLz97F7dMxBNOfGYu3rx8aCw?max-results=25&start-index=26
注意:
答案 1 :(得分:0)
对这个老问题做了一个坏消息,但我自己一直在研究这个问题。当您尝试访问其他人的播放列表时,您只能看到公开播放列表。私人可能包括历史记录,收藏夹和观看播放列表。还有一些可能是私人的。因此,除非您使用查询查看“我的”播放列表,否则您不会看到这些内容。还有已保存的播放列表 - 这些是其他人的播放列表,其中有人在自己的频道上保存了链接。所以你可能会来我的频道寻找有关开发的视频,我可能已经保存了对其他频道的引用 - 所以我不需要在我自己的播放列表中托管视频,我只相信其他人来维护他们的列表。无论如何,根据这个公认的问题,此功能似乎无法通过API访问:
https://code.google.com/p/gdata-issues/issues/detail?id=6610
作为“如何进行更改以获取频道所有播放列表?”的最终答案,答案是您不能。可能会有您无法看到的私人播放列表,此错误会阻止您查看已保存的播放列表。