Dorulog
article thumbnail
반응형

파이썬에서 youtube API를 통해서 정보를 추출하려면 채널 ID라는 항목이 나오는데요.

2021.12.30 - [Tip & Tech/Python] - 파이썬 유튜브 API 연동하기

 

파이썬 유튜브 API 연동하기

저번에는 크롤링으로 하는 방법을 알아보았는데요. 구글은 API를 제공해줘서 좀더 편한방법으로도 크롤링할 수 있습니다. 2021.12.28 - [Tip & Tech/Python] - 파이썬 유튜브 제목, 조회수 크롤링하기 파

dorudoru.tistory.com

유튜브 채널 아이디

현재 저의 채널은 아래와 같이 채널 ID가 바로 공개되는 방식인데요.

https://www.youtube.com/channel/UC_aIaSzQL2aYLw3CSUVYg8w

 

Doru

 

www.youtube.com

하지만 많은 사이트들은 접속하거나 기억하기 쉽게 도메인을 아이디 등으로 변경하여 사용 중입니다.

채널 ID보다는 직관적이고 보기에 편하기 때문이죠.

아래 야나두 홈페이지도 yanadooeng라는 별도 아이디로 운영하고 있음을 확인할 수 있습니다.

야나두 채널

 

이럴 경우 간단하게 파이썬을 통해서 채널 아이디를 추출하는 방법을 알아보겠습니다.

유튜브 채널 API 추출하는 방법

사실 별도 코드로 짜도 되고 유튜브 API매뉴얼에서 자동으로 실행도 가능한데요.

Youtube Video API 링크

 

Videos: list  |  YouTube Data API  |  Google Developers

Videos: list API 요청 매개변수와 일치하는 동영상의 목록을 반환합니다. 지금 사용해 보거나 예를 참조하세요. 요청 HTTP 요청 GET https://www.googleapis.com/youtube/v3/videos 매개변수 아래 표는 이 쿼리가 지

developers.google.com

먼저 제 유튜브 영상을 통해서 추출하는 방법을 알아보겠습니다.

유튜브 주소중 ?v= 다음에 위치한 것이 영상 ID입니다.

https://www.youtube.com/watch?v=8axitvE6MSQ 

위의 메뉴얼에 ID칸에 넣어주면되는데요.

먼저 part는 snippet정보에 있기 때문에 snippet을 입력해줍니다.

그리고 하단에서 Execute를 클릭하면 되는데요.

결과창에서 channelid값에서 채널 아이디를 볼 수 있습니다.

이 외에도 타이틀, 발행일자, 설명 등 다양한 정보를 볼 수 있습니다.

api 결과

해당 기능을 파이썬 코드로 짜면 아래와 같은데요.

파이썬으로 유튜브 채널 아이디 다량 변환하기

저는 유튜브 영상의 주소를 가지고 있는 source.xlsx라는 파일을 불러와서 

아래와 같이 source.url이라는 필드에 찾고싶은 유튜브 주소를 쭉 적어놓았습니다.

기본동작은

주소와 영상 ID를 분리한 다음, 다시 test.log로 반환하는 간단한 함수로 짰는데요.

아래와 같이 짤 수 있습니다. 

먼저 구글 API 패키지를 설치하여야 하는데요.

pip install google-api-python-client
pip install oauth2client

위 명령어로 패키지를 설치합니다.

import requests
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.tools import argparser
import pandas as pd



#youtube 설정
DEVELOPER_KEY =  #유튜브 API 키 값
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,developerKey=DEVELOPER_KEY)


# 변수 지정

df = pd.read_excel('./source.xlsx')
df2 = df.copy()
df2[['youtube', 'idv']] = df2['source.url'].str.split('=', n=1, expand=True)


yt_list1 = []
channel_id = []

for u in range(len(df2)):
    request = youtube.videos().list(
        part = "snippet",
        id = df2['idv'].iloc[u])
    response = request.execute()
    channel_id = response['items'][0]['snippet']['channelId']
    yt_list1.append([channel_id])
    
#결과값 저장
yt_result1 = pd.DataFrame(yt_list1, columns=['channel_id'])
yt_result1.to_csv('./log/'+'test'+'.csv',encoding='utf-8')

그리고 유튜브 API는 명령어에 따라서 코스트가 다른데요.

하루 무료 할당량은 1만건이고, 명령어별 코스트는 아래와 같습니다.

유튜브 API 코스트 

 

YouTube Data API (v3) - Quota Calculator  |  Google Developers

YouTube Data API (v3) - Quota Calculator The table below shows the quota cost for calling each API method. All API requests, including invalid requests, incur a quota cost of at least one point. The following two points are worth calling out as they both a

developers.google.com

그럼 잘 사용하시기 바랍니다.

728x90
profile

Dorulog

@dorudoru

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!