8

我正在尝试构建一个小的 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);
        });
    }
);

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

4

1 回答 1

6

编辑

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

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


我发现谷歌在哪里明确表示不可能。

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

本节说明如何检索包含特定用户上传的所有视频的提要。您不应在检索上传的视频供稿的请求中包含搜索参数。这些参数将从 YouTube 的搜索索引生成一个提要,有效地将结果集限制为索引的公共视频,而不是返回用户上传视频的完整列表。

它接着说:

要请求当前登录用户上传的所有视频的提要,请向以下 URL 发送 GET 请求。此请求需要身份验证令牌,使 YouTube 能够识别用户。

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


原帖

  1. API 文档orderby听起来像是只对响应进行了排序。

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

  2. 此外,max-results标签可让您指定要退回的商品数量。

  3. 这是一个示例,说明如何提取已排序的更多(本示例中为 50 个)结果。看起来您可能必须尽可能多地请求然后排序。绝对不理想。

  4. 检索用户的播放列表

于 2012-12-20T00:49:35.987 回答