PINKYETI

[Python] Youtube Open API 활용 - 인증 키 발급, 라이브러리 설치 그리고 샘플 코드 활용 본문

# Dev Note/[PYTHON]

[Python] Youtube Open API 활용 - 인증 키 발급, 라이브러리 설치 그리고 샘플 코드 활용

PINKYETI 2022. 7. 14. 00:10


안녕하세요. 핑크예티입니다.

최근 RestAPI 활용 백엔드 로직을 개발하며 Open API를

사용할 일이 있었는데요, 그 중 Youtube Open API 를 타겟으로

활용에 대한 간단한 예시를 보여드리고자 펜을 들었습니다.

 

이번 포스팅의 구성은, 

1) Youtube Open API 인증 키 발급

2) 유관 라이브러리 설치 (Python)

3) Sample Code 활용 (주제별 검색, search.list)

으로 진행될 예정이니 참고해주세요.

 

1. Youtube Open API 인증 키 발급

먼저 Youtube는 Google이 인수하면서 Google이 서비스 중인데요.

Open API를 활용하기 위해 'Google Cloud Platform' 에서

인증키를 발급받아야 합니다.

(Google Cloud Platform 링크는 아래 참고해주세요.)

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

 

Google 클라우드 플랫폼

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

accounts.google.com

 

자, 접속을 하셨으면 API 인증 키 발급을 시작해보겠습니다.

 

먼저 검색창에 'Youtube Data API v3' 를 검색하신 후 

좌측 하단의 '사용' 버튼을 클릭해주세요.

 

'사용' 을 클릭하셨으면 얼마간의 로딩 후, 서비스 사용이 완료됩니다.

그리고 API 인증키를 발급받기 위해, 우측 상단의

'사용자 인증 정보 만들기' 를 클릭해주세요.

 

저희가 사용할 데이터는 Open API기 때문에 '공개 데이터' 를 선택합니다.

 

그리고 다음을 누르시면 빨간 박스안에 여러분의 계정으로

API 인증키가 발급됩니다.

 

 

 

2. 유관 라이브러리 설치 (Python)

이제 API 인증 키를 발급 받았으니, Python으로 활용하기 위해

유관 라이브러리를 설치해줍시다. 대부분의 Open API를 제공하는

기업에서는 사용자들이 쉽게 사용할 수 있도록 가이드를 제공합니다.

 

공개 데이터 조회를 위한 GET Method 만 사용하는 경우, 필요한 정보는

제 글에서 참고하시면 되지만.. 추가 정보가 필요하신 분은 아래 링크 참고해주세요.

(Method 정의/Sample Code/Github Repository 등 확인이 가능합니다.)

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

 

API Reference  |  YouTube Data API  |  Google Developers

API Reference YouTube Data API를 사용하면 YouTube 웹사이트에서 일반적으로 실행하는 기능을 사용자의 웹사이트 또는 애플리케이션에 통합할 수 있습니다. 아래 목록에서는 API를 사용하여 검색할 수 있

developers.google.com

 

구글에서는 Python 사용자를 위해 apiclient 라는 라이브러리를 제공합니다.


 - pip install --upgrade google-api-python-client

>> GET Method 만 사용하시는 경우, 이것만 설치하셔도 무방합니다.

 

 - pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2

>> Sample Code 활용 혹은 POST Method를 활용하시는 경우, 추가 설치해주세요.

 

 

 

3. Sample Code 활용 (주제별 검색, search.list)

자 이제 Youtube Open API를 활용할 모든 준비가 끝이났습니다.

앞으로 활용할 search.list Method는 주제별 검색을 가능케 합니다.

그 중, 특정 채널의 인기조회수 1위 영상에 대한 정보를 GET♡ 해보겠습니다.

 

# search.list Parameter

part (필수 매개변수) type : string
part 매개변수는 API 응답이 포함하는 search 리소스 속성 하나 이상의 쉼표로 구분된 목록을 지정합니다. 매개변수 값에 포함할 수 있는 part 이름은 id 및 snippet입니다.
q (선택 매개변수) type : string
q 매개변수는 검색할 검색어를 지정합니다.
order (선택 매개변수) type : string
order 매개변수는 API 응답에서 리소스를 지시하는 데 사용할 메소드를 지정합니다. 기본값은 SEARCH_SORT_RELEVANCE입니다.

허용값은 다음과 같습니다.
  • date – 리소스를 만든 날짜를 기준으로 최근 항목부터 시간 순서대로 리소스를 정렬합니다.
  • rating – 높은 평가부터 낮은 평가순으로 리소스를 정렬합니다.
  • relevance – 검색 쿼리에 대한 관련성을 기준으로 리소스를 정렬합니다. 이 매개변수의 기본값입니다.
  • title – 제목에 따라 문자순으로 리소스를 정렬합니다.
  • videoCount – 업로드한 동영상 수에 따라 채널을 내림차순으로 정렬합니다.
  • viewCount – 리소스를 조회수가 높은 항목부터 정렬합니다.
maxResults (선택 매개변수) type : unsigned integer
maxResults 매개변수는 결과 집합에 반환해야 하는 최대 항목 수를 지정합니다. 허용값은 0 이상 50 이하입니다. 기본값은 5입니다.

사용된 Parameter 정보는 위의 표를 참고해주세요.

 

Sample Code의 활용은 최대한 간단하게 작성하였으니

주석 참고 부탁드리고, 추가 정보는 위의 YOUTUBE API DOCS 링크 참고해주세요.

 

### 유관 라이브러리 import ###
import httplib2
import os
import sys
from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import argparser, run_flow

### API Request를 위한 변수 선언 ###
API_KEY = ### API 인증 키 입력 (String) ###
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

### API Request를 위한 객체 선언 ###
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=API_KEY)

### GET Method 요청 (search.list) ###
result = youtube.search().list(
    part = 'snippet',
    q = '스튜디오 와플',
    order = 'viewCount',    
    maxResults = 1).execute()

### GET Method 요청 결과 확인 ###
result

요즘 튀르키예즈 온더블럭을 재밌게 보고있어서

스튜디오 와플의 조회수순 영상을 검색해보았습니다.

결과는 아래 사진 참고해주시고, 즐거운 API 활용되시길

바라며 이만 글을 마치도록 하겠습니다^^

(신기루 누님의 영상이 조회수가 높은가보네요 ㅎㅎ)