スポンサーリンク
PythonでYoutube Data APIを使ってYoutubeのチャンネル動画一覧を取得する
Youtubeの特定チャンネルの動画一覧が欲しかったのでPythonでスクリプトを作ってみました。
自分へのメモ用です。
使うためにはGoogle developer Console から APIキーを取得する必要があります。
必要なもの
- Google Developer Console のAPIキー (YouTubeが使えるもの)
- 取得したい動画のチャンネルID
APIキーは次の動画を参考にすると作り方が分かります。
Python YouTube API Tutorial: Getting Started – Creating an API Key and Querying the API
スクリプト
こちらがPython スクリプトになります。
import pandas as pd
import requests
import time
import os
####################
# API_KEY ('xxxyyyzzz'のようにAPIキーを挿入します)
API_KEY = ''
# 検索したいチャンネルのID ('aaabbbcccddd'のようにチャンネルIDを挿入します)
CHANNEL_ID = ''
# 作成するファイル名 (ディレクトリに保存するファイル名)
VIDEO_CSV_NAME = 'videos.csv'
####################
base_url = 'https://www.googleapis.com/youtube/v3'
url = base_url + '/search?key=%s&channelId=%s&part=snippet,id&order=date&maxResults=50'
infos = []
while True:
time.sleep(30)
response = requests.get(url % (API_KEY, CHANNEL_ID))
if response.status_code != 200:
print('エラーが発生しました')
break
result = response.json()
infos.extend([
[item['id']['videoId'],
item['snippet']['title'],
item['snippet']['description'],
item['snippet']['publishedAt']]
for item in result['items'] if item['id']['kind'] == 'youtube#video'
])
if 'nextPageToken' in result.keys():
if 'pageToken' in url:
url = url.split('&pageToken')[0]
url += f'&pageToken={result["nextPageToken"]}'
else:
print('正常終了です')
break
videos = pd.DataFrame(
infos, columns=[
'videoId',
'title',
'description',
'publishedAt'
])
videos.to_csv(VIDEO_CSV_NAME, index=None)
これでターミナルなどから叩くとcsvファイルで特定チャンネルの動画一覧をcsvファイル形式で取得できます。
videos で取得できるパラメータ群
パラメータ | 内容 |
---|---|
snippet.title | 動画のタイトル。 |
snippet.description | 動画の説明。 |
snippet.thumbnails | 動画に関連付けられているサムネイル画像のマップ。 |
snippet.publishedAt | 動画のアップロード日時。 |
動画のサムネイル画像の取得
上記のAPIからでもサムネイルを取得できますが、videoIdがわかっていれば別の方法でも取得できます。
この記事を参考にすると
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
これで<insert-youtube-video-id-here>
にvideoIdを挿入すればサムネイル画像にアクセスできます。
取得できたデータをFirebase などのDBに保存するとYoutube関連のアプリが作れそうですね。