ขอบคุณการอ้างอิงที่แชร์ที่นี่และที่อื่น ๆ ฉันได้สร้างสคริปต์ / เครื่องมือออนไลน์ที่สามารถใช้เพื่อรับวิดีโอทั้งหมดของช่อง
มันรวมสาย API เพื่อyoutube.channels.list
, playlistItems
,videos
,มันใช้ฟังก์ชั่นวนซ้ำเพื่อให้การเรียกกลับแบบอะซิงโครนัสรันการวนซ้ำครั้งต่อไปเมื่อได้รับการตอบสนองที่ถูกต้อง
นอกจากนี้ยังให้บริการเพื่อ จำกัด จำนวนคำขอที่เกิดขึ้นจริงในแต่ละครั้งดังนั้นคุณจึงปลอดภัยจากการละเมิดกฎ YouTube API การแชร์ตัวอย่างสั้น ๆ แล้วเชื่อมโยงไปยังรหัสเต็ม ฉันได้ผลลัพธ์มากถึง 50 ข้อ จำกัด ต่อการโทรโดยใช้ค่า nextPageToken ที่มาในการตอบสนองเพื่อดึงผลลัพธ์ 50 รายการถัดไปและอื่น ๆ
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.
}
});
}
นี่เป็นรายการวิดีโอขั้นพื้นฐานรวมถึงรหัสชื่อวันที่เผยแพร่และที่คล้ายกัน แต่เพื่อให้ได้รายละเอียดเพิ่มเติมของวิดีโอเช่นจำนวนการดูและชอบแต่ละคนมีการโทร 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.
}
});
ดูรหัสเต็มได้ที่นี่และรุ่นที่อยู่ที่นี่ (แก้ไข: ลิงก์
gitub แบบคงที่) แก้ไข: การอ้างอิง: JQuery, Papa.parse