여기 및 다른 곳에서 공유 된 참조 덕분에 채널의 모든 비디오를 얻는 데 사용할 수있는 온라인 스크립트 / 도구를 만들었습니다.
그것은에 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.
}
});
}
여기에는 id, title, 게시 날짜 등을 포함한 비디오의 기본 목록이 있습니다. 그러나 조회수 및 좋아요와 같은 각 동영상의 세부 정보를 얻으려면에 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.
}
});
참고 항목 여기에 전체 코드 , 그리고 여기에 라이브 버전 . (편집 : 고정 github 링크)
편집 : 종속성 : JQuery, Papa.parse