Burada ve başka yerlerde paylaşılan referanslar sayesinde, bir kanalın tüm videolarını elde etmek için kullanabileceğiniz çevrimiçi bir komut dosyası / araç hazırladım.
Bu API çağrıları birleştirir youtube.channels.list
, playlistItems
, videos
. Geçerli bir yanıt alındığında eşzamansız geri çağrıların bir sonraki yinelemeyi çalıştırmasını sağlamak için özyinelemeli işlevler kullanır.
Bu aynı zamanda, bir seferde yapılan gerçek istek sayısını sınırlamaya ve dolayısıyla YouTube API kurallarını ihlal etmenize engel olmaya hizmet eder. Kısaltılmış snippet'leri ve ardından tam kodun bağlantısını paylaşma. Ben sonraki 50 sonuçları getirmek için yanıt geliyor nextPageToken değerini kullanarak arama sınırlaması başına 50 max sonuçları var.
function getVideos(nextPageToken, vidsDone, params) {
$.getJSON("https://www.googleapis.com/youtube/v3/playlistItems", {
key: params.accessKey,
part: "snippet",
maxResults: 50,
playlistId: params.playlistId,
fields: "items(snippet(publishedAt, resourceId/videoId, title)), nextPageToken",
pageToken: ( nextPageToken || '')
},
function(data) {
// commands to process JSON variable, extract the 50 videos info
if ( vidsDone < params.vidslimit) {
// Recursive: the function is calling itself if
// all videos haven't been loaded yet
getVideos( data.nextPageToken, vidsDone, params);
}
else {
// Closing actions to do once we have listed the videos needed.
}
});
}
Bu videoda kimlik, başlık, yayın tarihi ve benzeri temel bir liste var. Ancak, görüntüleme sayıları ve beğeniler gibi her video hakkında daha fazla ayrıntı elde etmek için API çağrıları yapmak gerekir videos
.
// Looping through an array of video id's
function fetchViddetails(i) {
$.getJSON("https://www.googleapis.com/youtube/v3/videos", {
key: document.getElementById("accesskey").value,
part: "snippet,statistics",
id: vidsList[i]
}, function(data) {
// Commands to process JSON variable, extract the video
// information and push it to a global array
if (i < vidsList.length - 1) {
fetchViddetails(i+1) // Recursive: calls itself if the
// list isn't over.
}
});
Bkz tamamını buradan kodunu ve burada canlı versiyonu . (Düzenle: sabit github bağlantısı)
Düzenleme: Bağımlılıklar: JQuery, Papa.parse