2012-12-16 36 views
7

我正在嘗試構建一個JavaScript程序來查詢給定播放列表的YouTube API,按期限排序。一切正常,否則完美,但排序不佔整個播放列表,只有25個最新的視頻!這裏的工作example as a JSFiddle最小的完整和這裏是它的JavaScript部分:YouTube API'orderby = duration'不處理整個播放列表,只是最新的視頻

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排序結果的最新視頻看起來毫無意義。 我究竟如何檢索播放列表的最長或最短視頻,或者由某個給定用戶上傳的那些視頻?

回答

6

編輯

我不認爲你需要的功能是可用的。按照持續時間排序甚至在YouTube本身上都不可用。我認爲您需要使用max-resultsstart-index來獲取視頻塊。然後您可以按持續時間對編譯列表進行排序。

這裏是一個可能的解決方案的工作示例:http://jsfiddle.net/PKcnb/8


我發現其中谷歌表示,這明確地是不可能的。

YouTube API v2.0 – Video Feed Types: Videos uploaded by a specific user

本節介紹瞭如何檢索包含所有由特定用戶上傳的視頻 飼料。 您不應在請求中包含search parameters以檢索上傳的視頻供稿。該 參數將產生從YouTube的搜索索引飼料, 有效地限制 結果設置爲索引,公共視頻,而不是返回的用戶上傳視頻的完整列表。

它接着說:

要請求由當前登錄的用戶 上傳的所有視頻的飼料,發送GET請求發送到以下網址。此請求需要 身份驗證令牌,該令牌可使YouTube識別用戶。

因此,它可能是可能的,但您將不得不使用身份驗證令牌對其進行測試。


原貼

  1. API docs for orderby使其聽起來像只被排序的響應。

    視頻供稿和播放列表供稿支持的orderby參數指定將用於對API響應中的條目進行排序的方法。

  2. 此外,the max-results tag將允許您指定要返回的項目數。

  3. Here's an example of how you could pull more (50 in this example)結果已經排序。看起來你可能需要儘可能多地請求然後排序。絕對不理想。

  4. Retrieving a user's playlists

+0

你會認爲在對結果排序服務器端會比回答十幾個或更多個人查詢,而無需任何排序的整體操作比較便宜......絕對不是理想的,像你說的。 – ZeroOne

+0

@ZeroOne,我同意。我真的不明白爲什麼他們會這樣執行它的邏輯。 – JSuar

+0

這個鏈接可能會在這個話題上多一點點亮。 http://apiblog.youtube.com/2012/03/keeping-things-fresh.html – JSuar

相關問題