2015-06-05 3 views
0

У меня проблема с новым API YouTube. с версией 2 через вызов ajax, я мог бы взять последнее видео, загруженное в список воспроизведения, как я могу это сделать с новым API? Спасибо за поддержку .YouTube API v3 загружает последние видео из плейлиста

EDIT

Спасибо за ответ, я попробовал код, но возвращает яваскрипт ошибки: "Не удается прочитать свойство 'setApiKey' неопределенный" ниже HTML-кода:

<!doctype html> 
<html> 
    <head> 
    <title>YouTube</title> 
    </head> 
    <body>  
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
    <script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script> 

    <script>  
     gapi.client.setApiKey('{API-KEY-HERE}'); 
     gapi.client.load('youtube', 'v3', function() { 

      var request = gapi.client.youtube.playlistItems.list({ 
       part: 'snippet', 
       playlistId: 'PLTK1i0pncVu_tLhgrPo_o7QcRocqozxUv' 
      }); 

      request.execute(function (response) { 
       response.items.sort(function(a,b) {return a.snippet.publishedAt < b.snippet.publishedAt}) 

       for (var i=0; i<response.items.length;i++) 
       { 
        console.log(response.items[i].snippet.title + " published at " + response.items[i].snippet.publishedAt) 
       } 
      }); 
     }); 
    </script> 


    </body> 
</html> 

ответ

0

Что-то вроде этого загрузит все видео для указанного плейлиста и закажет их publishedAt. Для последнего видео просто сделайте первый результат.

<!doctype html> 
<html> 
<head> 
    <title>YouTube</title> 
</head> 

<body> 

    <script> 
     var allVideos = new Array(); 

     function onGoogleLoad() { 
      gapi.client.setApiKey('{YOUR-API-KEY}'); 
      gapi.client.load('youtube', 'v3', function() { 

       GatherVideos("", function() { 

        allVideos.sort(function(a, b) { 
         return Date.parse(b.snippet.publishedAt) - Date.parse(a.snippet.publishedAt); 
        }) 

        for (var i = 0; i < allVideos.length; i++) { 
         console.log(allVideos[i].snippet.title + " published at " + allVideos[i].snippet.publishedAt) 
        } 
       }); 
      }); 
     } 

     function GatherVideos(pageToken, finished) { 
      var request = gapi.client.youtube.playlistItems.list({ 
       part: 'snippet', 
       playlistId: 'PLTK1i0pncVu_tLhgrPo_o7QcRocqozxUv', 
       maxResults: 50, 
       pageToken: pageToken 
      }); 

      request.execute(function(response) { 
       allVideos = allVideos.concat(response.items); 
       if (!response.nextPageToken) 
        finished(); 
       else 
        GatherVideos(response.nextPageToken, finished); 
      }); 
     } 
    </script> 

    <script src="https://apis.google.com/js/client.js?onload=onGoogleLoad"></script> 

</body> 

</html> 
+0

Спасибо за ответ @theduck, я попробовал код, но возвращает яваскрипта ошибку: «Не удается прочитать свойство„setApiKey“неопределенных» вверх в мой комментарий HTML-код – Mic

+0

OK - Я еще раз взглянул на этот код и попытался его улучшить. Я добавил пейджинговую функциональность (YouTube API возвращает только 50 видеороликов, что является проблемой для вашего плейлиста). Надеюсь, теперь это будет хорошо для вас. Было бы намного проще, если бы они добавили опцию 'sort' в запрос! – theduck