如何使用javascript API和json获取youtube播放列表
How to get a youtube playlist using javascript API and json
这是我的youtube项目的一部分。我试图从JSON格式中提取视频信息,但我在这一行遇到了问题:
var videoId = data.feed.entry[i].link[1].href;
当我在单行中做这件事时,不是在cikle中写是可以的,而是在我有错误的时候。
//get youtube ID
function extract(url){
pos1=url.indexOf("videos/");
pos2=url.substr(42,11);
return pos2;
}
//My playlist LINK
var url2="http://gdata.youtube.com/feeds/api/playlists/B2A4E1367126848D?v=2&alt=json";
function playlistinfo(url1) {
$.ajax({
url: url1,
dataType: "jsonp",
success: function (data) { parseresults(data); }
});
}
//whit this get playlist data
function parseresults(data) {
//return playlist clip number
var klipove= data.feed.openSearch$totalResults.$t;
//put clips in <li>
for(i=0;i<=klipove-1;i++) {
var videoId = data.feed.entry[i].link[1].href;
//get video id ID
var id= extract(videoId);
thumb = data.feed.entry[i].media$group.media$thumbnail[0].url;
$('<li><img src="'+thumb+'" alt="'+id+'" class="thumb"/></li>').appendTo('.cont');
}
}
IMHO,如果使用$.getJSON
、$.each
,代码可以大大缩短
试试这个。
var playListURL = 'http://gdata.youtube.com/feeds/api/playlists/B2A4E1367126848D?v=2&alt=json&callback=?';
var videoURL= 'http://www.youtube.com/watch?v=';
$.getJSON(playListURL, function(data) {
var list_data="";
$.each(data.feed.entry, function(i, item) {
var feedTitle = item.title.$t;
var feedURL = item.link[1].href;
var fragments = feedURL.split("/");
var videoID = fragments[fragments.length - 2];
var url = videoURL + videoID;
var thumb = "http://img.youtube.com/vi/"+ videoID +"/default.jpg";
if (videoID !='videos') {
list_data += '<li><a href="'+ url +'" title="'+ feedTitle +'"><img alt="'+ feedTitle+'" src="'+ thumb +'"</a></li>';
}
});
$(list_data).appendTo(".cont");
});
演示:为您提供的播放列表Fiddle
p.S:请记住,youtube视频的缩略图可以在上找到
http://img.youtube.com/vi/{video-id}/default.jpg
(此处为更多信息(
我发现这些行:
var feedURL = item.link[1].href;
var fragments = feedURL.split("/");
var videoID = fragments[fragments.length - 2];
需要item.link[1].href的格式为:
http://gdata.youtube.com/feeds/api/videos/NAs5it-xjnQ/responses?v=2
然而,它不一定像有时的项目一样工作。链接[1]给出了一个类似的URL
http://www.youtube.com/watch?v=Vcp7xz6dfWE&feature=youtube_gdata
碎片[Fragments.length-2]最终将成为"www.youtube.com",而不是视频ID。
我修改了它,从item.content.src中检索链接,它在URL中总是有一个固定的格式,例如
http://www.youtube.com/v/NAs5it-xjnQ?version=3&f=playlists&app=youtube_gdata
所以最后的代码片段是这样的:
var tmp = item.content.src.split("/").reverse()[0];
var videoID = tmp.substring(0, tmp.indexOf("?"));
到目前为止,这还没有让我失望。
希望这能帮助那些被卡住或在检索视频ID时遇到问题的人。
问候
CK
简化了解决方案,去掉了字符串操作的东西。
var playListURL = 'http://gdata.youtube.com/feeds/api/playlists/B2A4E1367126848D?v=2&alt=json&callback=?';
var videoURL= 'http://www.youtube.com/watch?v=';
var vids = new Array();
$.getJSON(playListURL, function(data) {
$.each(data.feed.entry, function(i, item) {
vids.push( item["media$group"]["yt$videoid"]["$t"] );
});
console.log( vids );
});
相关文章:
- 如何获取youtube视频的缩略图
- 如何通过给定的url获取youtube音频数据
- 获取youtube播放列表的参考
- 如何在javascript w Ajax和JSON中使用v3 URL API获取Youtube视频标题
- 获取YouTube播放器的视频播放
- 从已知的视频 ID 获取 YouTube 视频标题
- 如何从网址获取YouTube视频ID
- 使用Python和Regex从URL获取YouTube视频ID
- 如何从YouTube iframe获取YouTube缩略图
- 从Facebook群组获取YouTube嵌入
- 在php中获取youtube视频标题
- 从url获取youtube播放列表
- 使用JavaScript.match()获取YouTube ID
- 如何从 JSON 对象获取 Youtube vid ID
- 获取YouTube数据并将其写入列表项
- 点击(html.push)获取Youtube视频描述
- 窗口的CORS错误.获取YouTube资源
- 在手机上使用ID获取Youtube和Vimeo缩略图
- 如何使用jquery获取Youtube视频信息
- 如何从网络获取YouTube视频ID ?