YouTube API"orderby = duration"不处理整个播放列表,只处理最新的视频

Zer*_*One 7 javascript youtube-api

我正在尝试构建一个JavaScript程序来查询给定播放列表的YouTube API,按持续时间排序.一切都工作得很完美,但订购并不考虑整个播放列表,只有25个最新的视频!这是一个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);
        });
    }
);
Run Code Online (Sandbox Code Playgroud)

我在XML和JSON中尝试了这个,除了播放列表搜索之外,我还尝试了其他类型的搜索.将API排序为结果的最新视频似乎毫无意义.我究竟如何检索播放列表的最长或最短视频,或者由给定用户上传的那些视频

JSu*_*uar 6

编辑

我不认为你想要的功能是可用的.YouTube本身甚至无法按照持续时间排序.我想你需要使用max-resultsstart-index获取视频块.然后,您可以按持续时间对编译列表进行排序

以下是一个可能解决方案的工作示例:http://jsfiddle.net/PKcnb/8


我发现谷歌说这种说法不可能.

YouTube API v2.0 - 视频Feed类型:特定用户上传的视频

本节介绍如何检索包含特定用户上传的所有视频的Feed.您不应在检索上传的视频供稿的请求中包含搜索参数.参数将从YouTube的搜索索引生成Feed,有效地将结果集限制为已编制索引的公开视频,而不是返回用户上传视频的完整列表.

它继续说:

要请求当前登录用户上传的所有视频的Feed,请向以下网址发送GET请求.此请求需要身份验证令牌,以便YouTube识别用户.

因此,它可能是可能的,但您必须使用身份验证令牌对其进行测试.


原帖

  1. 对API文档orderby使其听起来像只响应进行排序.

    视频源和播放列表供稿支持的orderby参数指定将用于对API响应中的条目进行排序的方法.

  2. 此外,max-results标签将让您指定有多少项目返回.

  3. 下面是一个示例,说明如何在已经排序的情况下提取更多(在此示例中为50)结果.看起来您可能需要尽可能多的请求然后排序.绝对不理想.

  4. 检索用户的播放列表