데브코스 최종 프로젝트에서 Youtube API를 통해 실시간 스트리밍 중인 방송의 정보를 가져오는 부분을 맡게 됐다.
Youtube 정보는 다른 프로젝트에서 사용할 수도 있기 때문에 블로그로 API를 조금 정리해본다.
우선 Youtube Data API에는 3가지 종류가 있다.
위와 같은 이유로 우리는 Youtube Data API만 사용하여 데이터를 가져오기로 했다. 실시간 정보라고 했지만 웹소켓을 제공하지는 않기 때문에 5~10분이라는 짧은 간격으로 데이터를 불러오도록 진행할 예정이다.
여러 가지 API를 제공하지만 내가 필요한 건 검색 API와 동영상 API이다. 특정 게임 스트리머를 정해서 그 스트리머가 방송을 켰을 때 5~10분 마다 방송의 정보를 불러와야 한다.
이 과정을 차례대로 작성해보면
search()videos()from googleapiclient.discovery import build
import pandas as pd
import time
from datetime import datetime
api_key = 'api_key'
youtube = build('youtube', 'v3', developerKey=api_key)
# 동영상 ID를 찾기 위한 search()
request = youtube.search().list(
part="snippet",
eventType="live", # 현재 생방송을 진행하고 있는 영상만 찾아올 수 있게 한다.
type="video", # 방송은 video이기 때문에 이 설정 필수
regionCode='KR',
channelId = '알고 싶은 channel의 id'
)
response = request.execute()
# 동영상 id
video_id = response['items'][0]['id']['videoId']
# 동영상 id를 통해 시청자 수를 가져오기
request = youtube.videos().list(
part="snippet,liveStreamingDetails",
id = video_id
)
response = request.execute()
# 현재 시청자 수
viewer_num = response['items'][0]['liveStreamingDetails']['concurrentViewers']
위의 코드 외에도 다른 python 코드 몇 개만 두고 이만 총총...
# Youtube 연결하기
from googleapiclient.discovery import build
youtube = build('youtube', 'v3', developerKey='api_key')
# query를 사용하여 youtube 동영상 서치
request = youtube.search().list(
part="snippet",
maxResults=25,
q="하마",
regionCode='kr'
)
response = request.execute()
# 해당 동영상 댓글 검색
request = youtube.commentThreads().list(
part="snippet,replies",
videoId="videoId"
)
response = request.execute()
# 특정 video id 를 사용한 영상 정보
# liveStreamingDetails 안에 실시간 조회수를 담고 있다.
request = youtube.videos().list(
part="snippet,contentDetails,statistics,liveStreamingDetails",
id="ON6XV5YCCiI"
)
response = request.execute()
# 카테고리 아이디를 사용해서 인기있는 영상
request = youtube.videos().list(
part="snippet,contentDetails,statistics",
chart="mostPopular",
regionCode="KR",
videoCategoryId="20"
)
response = request.execute()