Dzięki referencjom udostępnionym tutaj i gdzie indziej stworzyłem skrypt online / narzędzie, którego można użyć do uzyskania wszystkich filmów z kanału.
Łączy wywołań API do youtube.channels.list
, playlistItems
, videos
. Używa funkcji rekurencyjnych, aby asynchroniczne wywołania zwrotne uruchamiały następną iterację po otrzymaniu poprawnej odpowiedzi.
Służy to również ograniczeniu faktycznej liczby żądań wysyłanych jednocześnie, tym samym chroniąc Cię przed naruszeniem reguł API YouTube. Udostępnianie skróconych fragmentów, a następnie link do pełnego kodu. Osiągnąłem około 50 maksymalnych wyników na ograniczenie połączenia, używając wartości nextPageToken, która pojawia się w odpowiedzi na pobranie następnych 50 wyników i tak dalej.
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.
}
});
}
Otrzymało to podstawową listę filmów, w tym identyfikator, tytuł, datę publikacji i podobne. Ale aby uzyskać więcej szczegółów na temat każdego filmu, takich jak liczba wyświetleń i polubienia, należy wykonać wywołania 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.
}
});
Zobacz pełny kod tutaj , a wersję na żywo tutaj . (Edycja: naprawiono link github)
Edycja: Zależności: JQuery, Papa.parse