从youtube-api JSON播放列表中检索视频ID

时间:2013-07-10 11:15:55

标签: json youtube-api playlists

所以这里有一些代码可以将播放列表作为列表输出,所以我可以设置它并加载播放器。目前我只想要一些原始的,我可以看到我需要哪些数据。

$playlist_id = "bKIMlqJAz6GSqtm2x2rFQuIa8NKEhCTa";
$url = "https://gdata.youtube.com/feeds/api/playlists/".$playlist_id."?v=2.1&alt=json";
$data = json_decode(file_get_contents($url),true);
$info = $data["feed"];
$video = $info["entry"];
$nVideo = count($video);

echo "Playlist Name: ".$info["title"]['$t'].'<br/>';
echo "Number of Videos (".$nVideo."):<br/>";

for($i=0;$i<$nVideo;$i++){
echo "ID: ".$video[$i]['id']['$t'].'<br/>'; // this line causing problems
echo "Name: ".$video[$i]['title']['$t'].'<br/>';
echo "Link: ".$video[$i]['link'][0]['href'].'<br/>';
echo "Image: <img src='".$video[$i]['media$group']['media$thumbnail'][1]['url']."' /><br />";
}

一切正常,doodey doodey。除非我无法掌握身份证。

ID返回例如这堆垃圾; ID:标签:youtube.com,2008:播放列表:bKIMlqJAz6GSqtm2x2rFQuIa8NKEhCTa:PLLdE_Ow1C_Zv2bmDW9Yj8Foj4dKO3C4BJthoFmebTFUs

而不是链接和标题正确返回的LFRRGYNOUqs。

我搜索了Google的文档,看来$ video [$ i] ['id']是我需要的对象。

那么为什么要返回该字符串而不是我的视频ID?

1 个答案:

答案 0 :(得分:0)

根据xml部分的api(“json”版本基本相同):“标签指定了唯一且永久地标识订阅源或订阅源条目的URN。”

https://developers.google.com/youtube/2.0/reference#youtube_data_api_tag_id

在您的情况下,您可以使用$video[$i]['media$group']['yt$videoid']['$t']

您可能想要使用“jsonc”而不是“json”,它会返回专门为json格式化的数据,而不是执行xml版本的转录。即https://gdata.youtube.com/feeds/api/playlists/bKIMlqJAz6GSqtm2x2rFQuIa8NKEhCTa?v=2.1&alt=jsonc

您会注意到播放列表中的每个“项目”都有一个与Feed条目相对应的ID和一个具有自己ID的视频部分。