本記事では、Pythonを利用してYouTube Data APIを利用する方法についてご紹介します。GCP(Google Cloud Platform)コンソールでの操作方法・APIキーの発行から、具体的なPythonによるコーディング方法の概要まで。多数のスクリーンショットを交えてお伝えしていきます。
目次:
- GCP(Google Cloud Platform)でAPIキーを作成
- PythonコーディングでYouTube Data APIを利用する前提準備: Google Client Libraryをインストール
- google-api-python-clientからYouTube Data APIを操作する
- google-api-python-clientはYoutube Data APIの操作に対応
- Getting Started: APIキーの保存と格納
- Building and Calling a Service: serviceオブジェクトの生成
- YouTube Data APIを操作してデータを取得
- Youtube Data APIの利用料金について
- 利用料金は完全無料だが、呼び出しの種類・回数に1日ごとの上限がある
- 直接Googleに申請することで、上限アップを申請することが可能
本記事の参考として、下記のYouTube動画: PythonでYouTube APIを使ってみよう! 基本編 - YouTubeを参考にさせていただきました。
大変わかりやすいので、ぜひ参考にしてください。
GCP(Google Cloud Platform)でAPIキーを作成
GCPのコンソールへ移動し、ログインします。
新規プロジェクトを作成
作成した新規プロジェクトに切り替えて、APIダッシュボードに移動
ENABLE API AND SERVICESをクリック
YouTube Data API v3を選択し、ENABLEをクリック
CREATE CREDENTIALSから証明書(APIキー)を作成
YouTube Data v3, Public Data
APIキーをコピーして、DONE
PythonコーディングでYouTube Data APIを利用する前提準備: Google Client Libraryをインストール
Python Quickstart | Google Docs API | Google Developers の内容を参考にしています。
必要なライブラリとして、Google client libraryをインストールする必要があります。
■ virtualenv等(venv)の場合(pipでインストールする場合):
Quickstartのプログラムを実行するには、Python 3.10.7 以上のバージョンが必要となるとされています。
本記事では後述するライブラリ google-api-python-client を経由して操作します。そちらでの推奨Pythonバージョンは3.7以上です。
Google公式におけるQuickstartのプログラムを試す場合には、venv環境を作る際に、可能であればPythonのバージョンを3.10.7以上にしてからvenv環境を作成するか、pyenvでのバージョン管理を検討しましょう。
必要なライブラリ(Google Client Library)をインストールするコマンドは下記。
$ pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
■ Anaconda環境の場合:
$ conda install -c conda-forge google-api-python-client google-auth-httplib2 google-auth-oauthlib
google-api-python-clientからYouTube Data APIを操作する
google-api-python-clientはYoutube Data APIの操作に対応
まず、Google APIをPythonから操作するgoogle-api-python-clientについて。
googleapis/google-api-python-client: 🐍 The official Python client library for Google's discovery based APIs. から、docs / Getting Started を参照して進めます。
YouTube Data API v3(youtube v3)が含まれているので、google-api-python-clientからYouTube Data APIが操作できることが分かります。
Getting Started: APIキーの保存と格納
Getting Started ページ、”Setup”については上記のGoogle APIキー生成で完了しています。
次の手順Authentication and authorization のうち、今回は “1. Simple API access (API keys)”で進めます。
Warning: Keep your API key private. If someone obtains your key, they could use it to consume your quota or incur charges against your Google Cloud project.
にあるように、APIキーは誤って公開領域に置かないように注意しましょう。たとえば下記のように管理します。
■ APIキーを環境変数として保存
~/.bash_profileからAPIキーを環境変数として保存させる。下記を~/.bash_profile に記述追加します。
GOOGLE_API_KEY="xxxx_your_api_key_here_xxxx"
export GOOGLE_API_KEY
一度ターミナルを終了するなどして、再度bash_profileを読み込ませます。正しく読み込まれているか環境変数を出力させて確認。
$ echo $GOOGLE_API_KEY
これで格納したAPIキーが出力されればOKです。
次に、pythonファイル上で環境変数からのAPIキーを読み込み、変数に格納します。
import os
api_key = os.environ['GOOGLE_API_KEY']
※ os.environはエラーを発生させるが、os.getenvはNoneを返すだけでエラー発生はなし。
ほかにも、JSONやpythonでの設定ファイルを作成し、読み込むという方法もあります。その場合は .gitignoreに追加するなどして、不意に設定ファイルが公開されないように気をつけましょう。
Building and Calling a Service: serviceオブジェクトの生成
Building and calling a service に従って、下記コードを.pyファイルに記述していきます。
build関数をインポート。
from googleapiclient.discovery import build
APIキーを変数に格納しておき、build関数内で呼び出す
service = build('youtube', 'v3', developerKey=api_key)
これで無事にserviceオブジェクトを生成できたら、YouTube Data API v3を操作できるようになります。
YouTube Data APIを操作してデータを取得
まずは、 YouTube Data API | Google Developers の Reference を参照していき、どのようなリクエストの方法があるのか?というAPIの挙動の概要を確認します。
Overview | Google APIs Explorer | Google Developers から、Google APIの概要を知ることが可能です。
たとえば、Channel > list でテスト実行してみます。
listは、YouTubeのチャンネルidやYouTubeユーザー名(username)をリクエストで送信することで、適合する内容のリストを返してくれることが分かります。
次に、実際にPythonでコーディングしていきます。実際にPythonから操作する場合、google-api-python-clientから利用できるYouTube Data API v3のインスタンスメソッド一覧 にある channels() を参照して必要な必須引数や各引数についてを確認しましょう。
リクエストを作成します。
request = service.channels().list(
part = 'statistics',
# forUsername = '',
id = 'xxxxx_your_user_id_xxxxxx'
)
リクエストを実行し、返ってきたレスポンスを格納します。
response = request.execute()
参考: google-api-python-client/start.md at main · googleapis/google-api-python-client のExecution and responseを参照。
print(response) # レスポンスを出力
次のような結果が返ってきます。
{'kind': 'youtube#channelListResponse', 'etag': 'xxxxxxxxxxxxxxxxxx', 'pageInfo': {'totalResults': 0, 'resultsPerPage': 5}}
具体的なYouTube Data APIのユースケースや、さらなるPythonコーディング例については、 PythonでYouTube Data API v3のSearch:Listを操作: YouTubeデータ分析 からご確認ください!
Youtube Data APIの利用料金について
利用料金は完全無料だが、呼び出しの種類・回数に1日ごとの上限がある
Youtube Data APIについては完全無料で利用が可能です。しかし、APIキーによって1日の利用量に制限が課せられており、上限を超えた場合にはその日のうちはAPIの呼び出しが不可となります。
Youtube Data APIについては無料で利用可能です。無料は無料なのですが、かなりタイトな制約がかかります。APIキーを使う理由は実はここにあり、制約を課すためにAPIキーが使われるのですね。
どういうことかというとAPIキーの利用回数(厳密にはAPIの中の機能の利用回数)によって1日に使用できる上限が決められているのです。なので、その上限を超えてしまうと、自前のYoutubeアプリケーションや自前のYoutube検索フォームなどがストップしてしまいます。
Youtube Data API APIキー発行手順と有料か無料かを解説・セキュリティ対策も【2022年9月】 | QooTechWEB
APIの利用量のことを”Quota”と呼び、どの種類のメソッドでAPIを呼び出すかによってQuota costが異なります。
YouTube Data API (v3) - Quota Calculator | Google for Developers
たとえばsearch().list()の場合は100Quota cost, channels().list()の場合は1Quota costが発生します。
デフォルトの1日の最大上限は10,000Quotaなので、search().list()のみであれば100回の呼び出しが1日の上限となります。
直接Googleに申請することで、上限アップを申請することが可能
商用利用の場合など、一般ユーザーに広く公開してYoutube Data APIを利用する場合にはデフォルトのままの上限値ではすぐに上限に達してしまいます。
その場合は直接Googleに連絡、使用予定のWebサービスについて動画などを用いて説明することでYoutube Data APIの呼び出し上限(Quota)の値をアップしてもらうことが可能なようです。
参考: YouTube Data API の Quota 上限アップ申請で注意すべき 3 つのこと - booklista tech blog
この記事の気になった箇所を読み返す:
- GCP(Google Cloud Platform)でAPIキーを作成
- PythonコーディングでYouTube Data APIを利用する前提準備: Google Client Libraryをインストール
- google-api-python-clientからYouTube Data APIを操作する
- google-api-python-clientはYoutube Data APIの操作に対応
- Getting Started: APIキーの保存と格納
- Building and Calling a Service: serviceオブジェクトの生成
- YouTube Data APIを操作してデータを取得
- Youtube Data APIの利用料金について
- 利用料金は完全無料だが、呼び出しの種類・回数に1日ごとの上限がある
- 直接Googleに申請することで、上限アップを申請することが可能
Category: 開発・プログラミング | エンジニアリング
Tags: Python | API | YouTube・動画発信