안녕하세요

nextPageToken 이용하기 본문

유튜브컨텐츠탐색-StelLife/Youtube API

nextPageToken 이용하기

sakuraop 2023. 3. 12. 03:27

playListItems 예시

/**
 * @param {Array} channelIdArray
 * @returns
 */
exports.getAllPlaylistItems = async (playlistId) => {
  const apiKey = process.env.REACT_APP_YOUTUBE_API_KEY;
  let nextPageToken = null;

  let videos = [];

  try {
    do {
      const params = {
        key: apiKey,
        part: ["snippet"].join(","),
        playlistId,
        maxResults: 50,
        pageToken: nextPageToken,
      };
      const response = await axios.get("https://youtube.googleapis.com/youtube/v3/playlistItems", { params });
      videos = [...videos, ...response.data.items];
      nextPageToken = response.data.nextPageToken || null;
    } while (nextPageToken);

    return videos;
  } catch (error) {
    console.error(error, "getPlaylistItems error");
    return [];
  }
};

 

1. nexPageToken을 선언합니다.

 
exports.getAllPlaylistItems = async (playlistId) => {
  const apiKey = process.env.REACT_APP_YOUTUBE_API_KEY;
  let nextPageToken = null;
 

2. 다수의 items를 담을 videos 배열을 만듭니다.

 
  let videos = [];
 

3. 처음에는 nextPageToken이 없기 때문에 do while문을 이용합니다.

 
  try {
    do {
 

4. params를 설정하고 요청을 보냅니다.

 
      const params = {
        key: apiKey,
        part: ["snippet", "status"].join(","),
        playlistId,
        maxResults: 50,
        pageToken: nextPageToken,
      };
      const response = await axios.get("https://youtube.googleapis.com/youtube/v3/playlistItems", { params });
 

5. 반환받은 아이템을 videos 배열에 집어넣고, nextPageToken 값이 존재한다면 할당합니다.

      videos = [...videos, ...response.data.items];
      nextPageToken = response.data.nextPageToken || null;

6. nextPageToken이 없을 때까지 videos 배열에 반환받은 items를 추가합니다.

 
    } while (nextPageToken);

    return videos;
 

=> 완성된 videos 배열을 반환합니다.

'유튜브컨텐츠탐색-StelLife > Youtube API' 카테고리의 다른 글

프로젝트(5) - 기능 설계  (0) 2023.02.08