我正在尝试构建一个小程序来查询给定播放列表的YouTube API,按持续时间排序。一切都工作得很完美,但订购并不考虑整个播放列表,只有25个最新的视频!这是最小的完整工作example as a JSFiddle,这是JavaScript的一部分:
var playlistId = "UUAuUUnT6oDeKwE6v1NGQxug";
jQuery.getJSON(
"https://gdata.youtube.com/feeds/api/playlists/"+playlistId+"?v=2&orderby=duration&alt=json",
function(data) {
$.each(data.feed.entry, function(key, val) {
var title = val.title.$t;
var url = val.content.src;
var duration = val.media$group.yt$duration.seconds;
var minutes = Math.floor(duration / 60);
var seconds = (duration % 60);
if( seconds < 10 ) seconds = "0"+seconds;
var newRow = $("<tr></tr>");
newRow.append("<td><a href='"+url+"'>"+title+"</a></td>");
newRow.append("<td class='dur'>"+minutes+":"+seconds+"</td>");
$("#videos").append(newRow);
});
}
);
我在XML和JSON中尝试了这个,除了播放列表搜索之外,我还尝试了其他类型的搜索。将API排序为结果的最新视频似乎毫无意义。 我究竟如何检索播放列表的最长或最短视频,或者由特定用户上传的那些视频?
答案 0 :(得分:6)
修改强>
我认为您想要的功能不可用。 YouTube本身甚至无法按照持续时间排序。我认为您需要使用max-results
和start-index
来获取视频块。然后,您可以按持续时间对已编译的列表进行排序。
以下是一个可能解决方案的工作示例:http://jsfiddle.net/PKcnb/8
我发现谷歌说这种说法不可能。
YouTube API v2.0 – Video Feed Types: Videos uploaded by a specific user
本节介绍如何检索包含所有内容的Feed 特定用户上传的视频。 您不应在检索上传视频供稿的请求中加入search parameters 。该 参数将根据YouTube的搜索索引生成Feed, 有效地将结果集限制为索引的公共视频, 而不是返回用户上传视频的完整列表。
接着说:
请求当前登录上传的所有视频的Feed user,将GET请求发送到以下URL。此要求需要 身份验证令牌,可让YouTube识别用户。
因此,它可能是可能的,但您必须使用身份验证令牌对其进行测试。
原帖
API docs for orderby
使其听起来只有响应已排序。
视频供稿和播放列表供稿支持的orderby参数指定将用于对API响应中的条目进行排序的方法。
此外,the max-results
tag可让您指定要返回的项目数。
Here's an example of how you could pull more (50 in this example)结果已经排序。看起来您可能需要尽可能多的请求然后排序。绝对不理想。