Berkat referensi yang dibagikan di sini dan di tempat lain, saya telah membuat skrip / alat online yang dapat digunakan seseorang untuk mendapatkan semua video saluran.
Ini menggabungkan panggilan API untuk youtube.channels.list
, playlistItems
,videos
. Ini menggunakan fungsi rekursif untuk membuat panggilan balik asinkron menjalankan iterasi berikutnya setelah mendapatkan respons yang valid.
Ini juga berfungsi untuk membatasi jumlah permintaan aktual yang dibuat sekaligus, sehingga Anda tetap aman dari pelanggaran aturan API YouTube. Berbagi cuplikan singkat dan lalu tautan ke kode lengkap. Saya mendapatkan sekitar 50 hasil maksimal per batasan panggilan dengan menggunakan nilai nextPageToken yang muncul sebagai respons untuk mengambil 50 hasil berikutnya dan seterusnya.
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.
}
});
}
Ini mendapat daftar dasar video, termasuk id, judul, tanggal penerbitan, dan sejenisnya. Tetapi untuk mendapatkan lebih detail dari setiap video seperti jumlah tayangan dan suka, kita harus membuat panggilan API 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.
}
});
Lihat kode lengkapnya di sini , dan versi live di sini . (Edit: tautan github tetap)
Sunting: Ketergantungan: JQuery, Papa.parse