2012-03-01 63 views
2

我已經得到了當前顯示播放列表的視頻的HTML網頁,但它只是返回第一個25個視頻:JSON - 獲得來自YouTube播放超過25個視頻

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript" src="scripts/jquery.youtubepopup.js"></script> 
<script type='text/javascript'>//<![CDATA[ 
    $(window).load(function() { 
     var playListURL = 'http://gdata.youtube.com/feeds/api/playlists/A6A0F817C1771FE5?v=2&alt=json&callback=?'; 
     var videoURL = 'http://www.youtube.com/watch?v='; 
     $.getJSON(playListURL, function (data) { 
      var list_data = ""; 
      var column_count = -1; 
      var begin_table = "<table width='100%'><tr>"; 
      var end_table = "</table>"; 
      var html_data = ""; 
      $.each(data.feed.entry, function (i, item) { 
       column_count = column_count + 1; 
       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(column_count <= 3) 
        html_data += '<td><a class="youtube" href="#" rel="' + videoID + '" title="' + feedTitle + '"><img alt="' + feedTitle + '" src="' + thumb + '"></a></td>'; 
       else 
       { 
        column_count = 0; 
        html_data += "</tr><tr>"; 
        html_data += '<td><a class="youtube" href="#" rel="' + videoID + '" title="' + feedTitle + '"><img alt="' + feedTitle + '" src="' + thumb + '"></a></td>'; 
       } 
      }); 
      html_data = begin_table + html_data + end_table; 
      $(html_data).appendTo(".vidz"); 
      $("a.youtube").YouTubePopup({ autoplay: 1 }); 
     }); 
    });//]]> 
</script> 

任何人都知道如何獲得其餘的視頻?這個播放列表中有27個(我相信)。我對json沒有太多的經驗,所以我有點被卡住了。

感謝您的幫助!

回答

5

您需要在請求中定義最大結果,默認情況下只返回25個結果。

http://code.google.com/apis/youtube/2.0/reference.html#max-resultssp

下面的代碼片段將返回28項結果:

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type='text/javascript'>//<![CDATA[ 
    $(window).load(function() { 
     var playListURL = 'http://gdata.youtube.com/feeds/api/playlists/A6A0F817C1771FE5?v=2&alt=json&max-results=50'; 
     var videoURL = 'http://www.youtube.com/watch?v='; 
     $.getJSON(playListURL, function (data) { 
      var list_data = ""; 
      var column_count = -1; 
      var begin_table = "<table width='100%'><tr>"; 
      var end_table = "</table>"; 
      var html_data = ""; 
      $.each(data.feed.entry, function (i, item) { 
       column_count = column_count + 1; 
       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(column_count <= 3) 
        html_data += '<td><a class="youtube" href="#" rel="' + videoID + '" title="' + feedTitle + '"><img alt="' + feedTitle + '" src="' + thumb + '"></a></td>'; 
       else 
       { 
        column_count = 0; 
        html_data += "</tr><tr>"; 
        html_data += '<td><a class="youtube" href="#" rel="' + videoID + '" title="' + feedTitle + '"><img alt="' + feedTitle + '" src="' + thumb + '"></a></td>'; 
       } 
      }); 
      html_data = begin_table + html_data + end_table; 
      $(html_data).appendTo(".vidz"); 
      }); 
    });//]]> 
</script> 
</head> 
<body> 
<div class="vidz"></div> 
</body> 
</html> 
+0

我嘗試這樣做,它似乎在data.feed.entry分成25「塊」,所以我猜我會不知何故必須使用start-index,但我有點失落。 – Robert 2012-03-01 17:50:53

+1

當我輸入以下內容時,我獲得了超過25個結果 [https://gdata.youtube.com/feeds/api/playlists/A6A0F817C1771FE5?max-results=50&v=2&alt=json](https://gdata。 youtube.com/feeds/api/playlists/A6A0F817C1771FE5?max-results=50&v=2&alt=json) – SuperRod 2012-03-01 17:59:07

+0

當我插入該網址時,它不起作用: [鏈接](http://jsfiddle.net/u5Anv /) - JSFiddle – Robert 2012-03-01 18:20:25