Dank der hier und anderswo geteilten Referenzen habe ich ein Online-Skript / Tool erstellt, mit dem alle Videos eines Kanals abgerufen werden können.
Es kombiniert API - Aufrufe youtube.channels.list
, playlistItems
, videos
. Es verwendet rekursive Funktionen, damit die asynchronen Rückrufe die nächste Iteration ausführen, sobald eine gültige Antwort erhalten wird.
Dies dient auch dazu, die tatsächliche Anzahl der gleichzeitig gestellten Anfragen zu begrenzen und dich so vor Verstößen gegen die YouTube-API-Regeln zu schützen. Teilen Sie verkürzte Snippets und dann einen Link zum vollständigen Code. Ich habe die maximale Anzahl von 50 Ergebnissen pro Anruf erreicht, indem ich den nextPageToken-Wert verwendet habe, der in der Antwort zum Abrufen der nächsten 50 Ergebnisse usw. enthalten ist.
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.
}
});
}
Dies führte zu einer grundlegenden Auflistung der Videos, einschließlich ID, Titel, Veröffentlichungsdatum und ähnlichem. Um jedoch detailliertere Informationen zu den einzelnen Videos zu erhalten, z. B. Anzahl und Likes der Ansicht, müssen API-Aufrufe durchgeführt werden 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.
}
});
Den vollständigen Code finden Sie hier und die Live-Version hier . (Bearbeiten: fester Github-Link)
Bearbeiten: Abhängigkeiten: JQuery, Papa.parse