PythonでYoutube Data APIを使ってYoutubeのチャンネル動画一覧を取得する
PythonでYoutube Data APIを使ってYoutubeのチャンネル動画一覧を取得する
Youtubeの特定チャンネルの動画一覧が欲しかったのでPythonでスクリプトを作ってみました。
自分へのメモ用です。
使うためにはGoogle developer Console から APIキーを取得する必要があります。
必要なもの
APIキーは次の動画を参考にすると作り方が分かります。
Python YouTube API Tutorial: Getting Started - Creating an API Key and Querying the API
スクリプト
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関連のアプリが作れそうですね。