Python

[파이썬/Python] 유튜브 API를 사용하여 원하는 검색 결과 불러오기

F12:) 2023. 7. 2. 21:46

프로젝트에서 노래에 대한 컨텐츠에 사용하기 위해서 유튜브 API를 사용하기로 하였다. 그래서 우리는 라디오에서 흔히 말하는 'OO의 OOO'을 키워드로 유튜브에 검색하여 원하는 영상 주소를 읽어오는 방법을 사용해보려 한다.

 

1. 유튜브 API key 발급받기

유튜브 API를 사용하기 위해서 개인의 고유 key가 필요하다. 그래서 우선 유튜브 API를 사용하기 위한 개인 Key를 발급받아보자.

 

우선, 아래의 링크에 들어가 새 프로젝트를 생성하자.(기존의 프로젝트가 있다면, 해당 프로젝트를 사용해도 무방하다)

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

 

Google 클라우드 플랫폼

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

accounts.google.com

좌측 상단에서 먼저 프로젝트를 생성해야한다. 나같은 경우는, 졸업프로젝트 폴더인 VisualRadio를 생성하여 이곳에서 진행할 예정이다. 어떤 프로젝트도 존재하지 않는다면, '새 프로젝트 생성'과 같은 버튼이 있을 것이다. 프로젝트 이름과 위치(그대로 나둬도 무방)를 입력한 후 프로젝트를 생성해준다.

 

생성 후에 생성이 완료되었다는 표시가 뜨면 좌측에 있는 메뉴 바에서 라이브러를 클릭해준다. 그렇다면 검색할 수 있는 페이지로 이동하게 될 것이다.

 

이제 검색창에 "Youtube"라고 검색하고 엔터를 누른다.

 

그렇다면 보이는 것과 같이, 3개의 결과가 상단에 보이게 될 것인데, 나의 프로젝트를 위해서는 가장 상단에 있는 Youtue Data API v3만 사용해도 무방했기에, 해당 라이브러리만 사용하도록 하겠다. Youtube Data API v3를 클릭한다.

 

사용 버튼을 눌러 사용하도록 한다. 약간의 시간이 소요될 수 있다.

 

잠시 기다리게 되면, 다시 원래의 화면으로 돌아오게 된다.

여기서 이제는 사용자 인증 정보를 클릭한다. 바로 개인 API Key를 발급받는 부분이다.

 

이제 상단에 있는 사용자 인증 정보 만들기를 클릭하자. 누르게 되면 여러가지 메뉴가 뜨는데, 여기서 API 키를 선택한다.

 

그러고 잠시 기다리면 개인 API key가 생성된다!! 이 키는 개인의 고유 key이므로 외부 노출을 자제하는 것이 좋다.


2. 파이썬으로 원하는 키워드에 대한 검색결과 가져오기

이제 코드를 통해서 API를 요청하고, 원하는 검색 결과를 가져오자.

우선 유튜브 API를 요청하기 위해서, 몇가지 라이브러리가 필요하다. 따라서 패키지를 콘솔에서 우선적으로 설치해주자. 설치하는 코드는 아래와 같다.

pip install google-api-python-client oauth2client

두 개의 패키지를 한 번에 다운받을 수 있게 하였다.

 

이제 패키지 설치도 완료 되었으니 진짜 코드를 확인해보자.

from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.tools import argparser
import webbrowser

위의 3개는 유튜브의 API를 받기 위한 라이브러리를 import한 것이고, 4행의 webbrowser는 받아온 API가 어떤 결과를 불러왔는지 직접 확인하기 위해서 import 해준다.

 

DEVELOPER_KEY = "개인 API 키"
YOUTUBE_API_SERVICE_NAME="youtube"
YOUTUBE_API_VERSION="v3"
youtube = build(YOUTUBE_API_SERVICE_NAME,YOUTUBE_API_VERSION,developerKey=DEVELOPER_KEY)

DEBELOPER_KEY에 본인의 키를 입력하고 build해준다.

 

search_response = youtube.search().list(
    q = "권진아의 lonely night",
    order = "relevance",
    part = "snippet",
    maxResults = 30
    ).execute()

이번 예제에서 실험할 키워드는 "권진아의 lonely night"이다. 보는 것처럼 q에는 본인이 검색하고 싶은 키워드를 검색하면 된다. 또한 order는 어떤 순서로 가져올 것인지를 정하는 파라미터이다. 간단하게 파라미터의 종류에 대해 소개한다.

이 외에도 여러가지 파라미터가 있으니, 아래의 링크를 통해 찾고 본인이 원하는 목적에 따라서 이용하면 되겠다. (한국어로 잘 적혀있으니 무리 없으리라 생각한다.)

https://developers.google.com/youtube/v3/docs/search/list?hl=ko 

 

Search: list  |  YouTube Data API  |  Google for Developers

Search: list 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. API 요청에 지정된 쿼리 매개변수와 일치하는 검색결과의 모음을 반환합니다. 기본적으로 검색결과

developers.google.com


3. 받아온 정보 확인하기

이제 받아온 정보들을 확인해보자. 우리의 프로젝트에서는 가장 상위의 동영상만을 필요했기에, 아래와 같이 코드를 짰다. 원하는 결과를 많이 보고싶다면 slicing을 이용해서 확인하면 되겠다.

import webbrowser

# API 응답에서 첫 번째 항목의 링크 가져오기
youtube_link = search_response['items'][0]['id']['videoId']

# 링크 열기
webbrowser.open(f"https://www.youtube.com/watch?v={youtube_link}")

items에서 0번째를 불러왔기에 가장 상단의 동영상을 가져왔고 해당 링크에 대한 영상을 클릭하면 아래와 같은 영상이 로드됨을 알 수 있다.

우리가 불러온 search_respose에는 많은 값들이 담겨있다. 이 값들에 대해서 필요한 정보를 적절히 추출하여 원하는 목적에 맞게 사용하면 좋을 것 같다.