카테고리 없음

Youtube Data API 사용하기, React에서 유튜브 클론코딩(with 고양이 비디오들)

쿠키는 서비스 2023. 12. 19. 12:00
반응형

유튜브 API를 사용해서 유튜브 클론코딩을 해보려고 한다.

아래의 페이지에 들어가보면 영상 리스트를 가지고 올 수 있는 data api를 제공한다.

 

https://developers.google.com/youtube/v3/docs/search/list

 

Search: list  |  YouTube Data API  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English Search: list 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. API 요청에 지정된 쿼리 매개변

developers.google.com

 

브라우저 창을 가로로 적당히 크게 열면 Try this method 배너를 확인할 수 있다.

이 배너에서 스크롤을 쭉 내린다.

Show code를 클릭해서 샘플 코드를 확인할 수 있다.

저는 JavaScript를 선택했습니다.

고양이라고 검색한 영상 데이터를 얻고 싶었기 때문에 q에 고양이를 입력해주면 다음과 같이 코드가 작성됩니다.

YOUR_API_KEY에 내가 발급받은 key를 넣어주고 코드를 가져다가 사용할 수 있습니다.

공식 사이트에서는 위와 같이 API를 확인해볼 수 있습니다.

 

1. 프로젝트 설정 및 의존성 설치:

먼저, React 앱을 생성하고 필요한 패키지를 설치합니다.

npx create-react-app youtube-clone 
cd youtube-clone 
npm install axios @material-ui/core

2.  YouTube API 키 가져오기:

YouTube API를 사용하기 위해 Google Cloud Console에서 프로젝트를 생성하고 YouTube Data API를 활성화한 후 API 키를 발급받습니다.

 

3. API 호출을 위한 Axios 설정:

src 폴더 안에 api.js 파일을 생성하고 다음과 같이 YouTube API를 호출할 수 있는 Axios 인스턴스를 설정합니다.

// src/api.js

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://www.googleapis.com/youtube/v3/',
  params: {
    part: 'snippet',
    maxResults: 5,
    key: 'YOUR_YOUTUBE_API_KEY', // 여기에 발급받은 API 키를 넣어주세요.
  },
});

export default instance;

 

4. YouTube 비디오 목록 가져오기:

src 폴더 안에 VideoList.js 파일을 생성하고 다음과 같이 YouTube 비디오 목록을 가져오는 컴포넌트를 작성합니다.

// src/VideoList.js

import React, { useState, useEffect } from 'react';
import api from './api';

function VideoList() {
  const [videos, setVideos] = useState([]);

  useEffect(() => {
    const fetchVideos = async () => {
      try {
        const response = await api.get('/search', {
          params: {
            q: '고양이', // 원하는 검색어를 입력하세요.
          },
        });
        setVideos(response.data.items);
      } catch (error) {
        console.error('Error fetching videos:', error);
      }
    };

    fetchVideos();
  }, []);

  return (
    <div>
      <h2>YouTube Clone</h2>
      <ul>
        {videos.map((video) => (
          <li key={video.id.videoId}>
            <img
              src={video.snippet.thumbnails.medium.url}
              alt={video.snippet.title}
            />
            <p>{video.snippet.title}</p>
          </li>
        ))}
      </ul>
    </div>
  );
}

export default VideoList;

 

5. 메인 앱 컴포넌트 작성:

src 폴더 안에 있는 App.js 파일을 수정하여 VideoList 컴포넌트를 포함하도록 합니다.

// src/App.js

import React from 'react';
import VideoList from './VideoList';

function App() {
  return (
    <div className="App">
      <VideoList />
    </div>
  );
}

export default App;

 

6. 실행:

프로젝트 폴더에서 다음 명령어를 실행하여 앱을 시작합니다.

npm start

 

 

 

짠~! 데이터를 뿌려주면 다음과 같은 결과를 얻을 수 있습니다.

 

하루에 할당된 api 호출 토큰이 정해져있으니 데이터를 가져온 다음에 꼭 더미데이터로 저장해서 사용해주세요!!

생각보다 토큰이 작았어요..😵‍💫

저는 갑자기 403 error가 떠서 당황했고 다시 새로운 키를 발급받은 다음에 다시 데이터를 가져왔어요,, (번거로움)

mockData가 급한데 막혔다!

하시는 분들은 여기서 json파일 긁어가서 사용하세요~!

https://github.com/syoungee/youtube-clone/blob/main/public/data/searchResult.json

 

+) 번외로

상세 비디오 화면에서 유튜브 우측 영역을 구현해보려고 했는데

2023년 6월부터 연관된 비디오 검색 관련 api는 제공하지 않는다고 합니다🥹🥹

https://youtube.googleapis.com/youtube/v3/search?part=snippet&relatedToVideoId=Ks-_Mh1QhMc&type=video&maxResults=25&key=[YOUR_API_KEY]

참고해주세요!❤️

 

반응형