본문 바로가기
데이터 분석

2.[개발] Youtube API를 이용하여 인기 급상승 동영상 불러오기 누구나 할 수 있다 ! [1/1]

by 모아모아 리뷰 2023. 11. 21.
반응형

들어가기 전 Youtube API 를 사용하여 다양한 기능을 만들 수 있는데 맨날 밤에 유튜브만 보면서 자는 나한테 선물을 주기위해 인기 급상승 동영상을 불러와보도록 하겠음

 

1. GCP(Google Cloud Console) 접속 :

https://console.cloud.google.com/

 

Google 클라우드 플랫폼

로그인 Google 클라우드 플랫폼으로 이동

accounts.google.com

2. 프로젝트 생성 : 

I : '프로젝트 만들기' 클릭 :

우리가 사용할유튜브 API 컨텐츠는 구글 클라우드 플랫폼에서 제공해주기 때문에 따라서 우리는 구글 클라우드 플랫폼 프로젝트를 생성해야함.

 

 

II : YouTube Data API v3 활성화 및 API KEY 등록 :

검색 - YouTube Data API v3 - 사용 클릭

 

 

III : API 키 받아오기 :

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

 

Videos: list  |  YouTube Data API  |  Google for Developers

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

developers.google.com

자 생성이 정상적으로 되었으면 API 사용해 보기  클릭을 해준 이후 내가 가지고 오고싶은 데이터의 API KEY를 할당받는다.

 

 

사용자 인증 정보 만들기 - 사용자 데이터 - 공개 데이터 - 다음을 누르게 되면 정상적으로 API 키 발급에 성공하게된다.

API 키는 Django에 세팅하여 유튜브에 다양한 영상들을 호출할 수 있게 도와주는 고유 키가 된다.

 

 

 

YouTube 인기 동영상 가져오기

IIII : 구성요소(중요) :

  1. API 요청 구성: API 요청은 다음과 같이 구성됨
    • part=snippet: 동영상의 기본 정보를 가져옴.
    • chart=mostPopular: 인기 동영상 목록을 요청함
    • regionCode=KR: 특정 지역 한국 의 인기 동영상을 가져옴

 

성공적으로 인기있는 동영상을 호출 받았다는 결과를 받아 볼 수 있다.

 

3 : Django 프로젝트에서 API 키 사용하기

I :

ulr 에서 maxResults=10 -> 5 로 줄여주게되면 한페이지에 인기동영상을 5개만 불러올 수 있음

API 를 호출할 때마다 할당된 포인트가 감소하기 때문에 할당량 초과를 대비하여 조금만 불러옴

 

Youtube 할당량 계산기 

https://developers.google.com/youtube/v3/determine_quota_cost?hl=ko

views.py

def get_youtube_videos(api_key):
    url = f'https://www.googleapis.com/youtube/v3/videos?part=snippet&chart=mostPopular&maxResults=10&regionCode=KR&key={api_key}'

    # API 요청
    response = requests.get(url)

    # 응답이 성공적인지 확인
    if response.status_code == 200:
        data = response.json()

        # 'items' 키가 있는지 확인
        if 'items' in data:
            popular_videos = []
            for item in data['items']:
                video = {
                    'title': item['snippet']['title'],
                    'video_id': item['id'],
                    'thumbnail_url': item['snippet']['thumbnails']['high']['url']
                }
                popular_videos.append(video)
            return popular_videos
        else:
            # 'items' 키가 없는 경우, 오류 메시지 또는 다른 정보 로깅
            print("No 'items' key in response:", data)
            return []  # 또는 적절한 기본값 반환
    else:
        # 응답이 실패한 경우, 오류 로깅
        print("Failed to fetch YouTube videos:", response.text)
        return []  # 또는 적절한 기본값 반환

@login_required
def home(request):
    # Youtube API 키 
    api_key = settings.YOUTUBE_API_KEY

    # 인기 동영상 목록 가져오기
    youtube_videos = get_youtube_videos(api_key)


    return render(request, 'home.html', {'popular_videos' : youtube_videos})

 

II : settings.py 에 Youtube API 키를 추가해줘함. 보안상 이유로 settings.py에서 가져올 수 있도록 구성해줌.

#settings.py

# YouTube API 키
YOUTUBE_API_KEY = 'YOUTUBE_API_KEY'

 

III : home.html 

 

 

<!-- HOME.HTML --!>
<!-- 인기 동영상 목록 추가 -->
<div class="popular-videos">
  <h2>인기 동영상</h2>
  {% for video in popular_videos %}
    <div class="video">
      <h3>{{ video.title }}</h3>
      <a href="https://www.youtube.com/watch?v={{ video.video_id }}" target="_blank">
        <img src="{{ video.thumbnail_url }}" alt="{{ video.title }}">
      </a>
    </div>
  {% endfor %}
</div>

 

요로코롬 css 넣어서 꾸며주면 급상승 인기 동영상 TOP 6 가 예쁘게 나타나는 것을 볼 수 있다.

홀수 리스트를 불러오니까 배열이 안맞아서 6개로 바꿔줌.

반응형

최근댓글

최근글

skin by © 2024 ttutta