いくつかの参考動画にしたがって、PythonでYouTube Data API v3のSearch:Listをテスト実行させた際のメモ書きを共有します。
PythonでYouTube Data APIを利用するには、前提としてGCP(Google Cloud Platform)でAPIキーを作成することが必要になります。APIキーの作成方法や必要なライブラリについては、 PythonでYouTube Data APIを利用!GCPでのAPIキー作成から解説 の記事を参考にしてください。
目次:
- PythonでYouTube Data API v3のSearch:List操作する際に参考にした動画
- YouTube Data APIドキュメント上でのテスト実行
- YouTube Data APIを利用するPythonによるコーディング例
- YouTube Data APIと通信し、Serviceオブジェクトの生成
- search().list()メソッドによってYouTube内の動画・チャンネル・プレイリストをキーワード検索
- search.list()メソッドのオプションを一部解説
- 月ごとに何本の動画がアップロードされているか、月ごとの投稿本数を調べる
- YouTube Data APIで実装したものを手早く共有したい場合、StreamlitおよびStreamlit Community Cloudがおすすめ
PythonでYouTube Data API v3のSearch:List操作する際に参考にした動画
参考にした動画はこちら。
(Python)YouTube Data API v3 Search:List(YouTubeデータ分析) - YouTube
YouTube API を使って YouTube をマーケティング的に活用。本動画では 2016年 1月から 2019年10月までの "Kotlin" の各月アップロード数を抽出。そして CSV に自動保存。
YouTube Data APIドキュメント上でのテスト実行
YouTube Data API のドキュメント内からテストが可能です。まずは、YouTube Data APIのSearch()の挙動がどのようなものか確認するため、ドキュメントからテストを実行してみます。
Search > list のテスト (ページ最下部)からテスト実行できます。
q の項目に任意のキーワードを入れると、キーワード検索結果データが返ってきます。
下の画像では q = 'kotlin' と入力してテスト実行した結果。
パラメータ: q について
The q parameter specifies the query term to search for.
Search: list | YouTube Data API | Google Developers
YouTube Data APIを利用するPythonによるコーディング例
APIキーの取得等については PythonでYouTube Data APIを利用!GCPでのAPIキー作成から解説 を参照。
利用するAPIは YouTube Data API v3 でOK。
YouTube Data APIと通信し、Serviceオブジェクトの生成
import os
from googleapiclient.discovery import build # ライブラリのインポート
api_key = os.environ['GOOGLE_API_KEY'] # 自分のAPIキーを格納
service = build('youtube', 'v3', developerKey=api_key) # build関数を実行し、serviceオブジェクトを生成search().list()メソッドによってYouTube内の動画・チャンネル・プレイリストをキーワード検索
下のコード例では、“python” というキーワードを含む動画を検索しています。search().list()メソッドを利用してリクエストを実行します。
serviceオブジェクトが持っているメソッドについては google-api-python-client | YouTube Data API v3 | Instance Methods を参照してください。
search.list()メソッドのオプションを一部解説
上コード search.list()メソッドのオプションの一部を解説します。
■ partについて:
どのようなデータを抽出するか?を選択できます。しかし、search().list()においては”snippet”というものしか選択できません。
他のメソッド、たとえばvideo().list()では、”statistics”, “status”など、複数同時に選択することも可能です。statisticsにおいては、視聴回数やチャンネル登録者数などを確認できます。
■ maxResultsについて:
The maxResults parameter specifies the maximum number of items that should be returned in the result set. Acceptable values are 0 to 50, inclusive. The default value is 5.
Search: list | YouTube Data API | Google for Developers
■ videoCategoryについて: VideoCategories | YouTube DataAPI
VideoCategoryId : youtube api video category id list
必須のpartパラメータについて:
このパラメータでは、API レスポンスに含める必要がある 1 つ以上の最上位レベル(ネストされていない)のリソース プロパティを指定します。
YouTube Data API の概要 | Google Developers | partパラメータについて
つまり、APIレスポンスに含めたい内容(取得したい内容)を指定します。
次に、作成したリクエストを実行します。
#リクエストを実行してレスポンスとして格納
response_python = request_python.execute()下記のように辞書型のデータが返ってきます。
辞書型のため、キーを指定して値を取り出すことが出来ます。以下に返り値の扱いの例を載せておきます。
- ‘python’で検索した場合にヒットした検索結果総数だけを取り出したい時
response_python['pageInfo']['totalResults'] // 340639- レスポンスとして返ってきた検索結果の個数を確認(通常はmaxResultsの値と一致)
len(response['items']) // 10- 返ってきた最初の動画タイトルを表示
response['items'][0]['snippet']['title']- レスポンスとして返ってきた全ての動画タイトルと説明文を表示
for item in response['items']:
print(item['snippet']['title'])
print('\t', item['snippet']['description'])search()メソッドについて: YouTube Data API v3 . search
月ごとに何本の動画がアップロードされているか、月ごとの投稿本数を調べる
下記の動画とソースコードを参照してください。
post★YouTubeAPI_Demo.ipynb - Colaboratory
year = ['2016', '2017', '2018', '2019']
month = []
for i in range(1, 13):
if 0 < i < 10:
month.append('0' + str(i))
else:
month.append(str(i))YouTube Data APIで実装したものを手早く共有したい場合、StreamlitおよびStreamlit Community Cloudがおすすめ
YouTube Data APIは無料利用の場合には一定の利用回数制限があり、便利ですが一般公開させるには大きなハードルがあります。
API利用の際のQuota(利用上限)について参考: PythonでYouTube Data APIを利用!GCPでのAPIキー作成から解説
しかし、「社内やチーム内のみで利用したい」という場合も多いはず。そのような場合には、Streamlitというライブラリを用いてフロントを実装し、Streamlit Community Cloudで公開するのがおすすめです。
Streamlit • A faster way to build and share data apps
Streamlit is an open-source app framework for Machine Learning and Data Science teams. Create beautiful web apps in minutes.
streamlit.io
参考: Streamlit Community CloudでWebアプリを公開する際の準備事項
Streamlitを利用すれば、Pythonのみでフロントを実装することが可能です。細かな調整は難しいですが、ざっくり実装したい場合にはおすすめ。
この記事の気になった箇所を読み返す:
- PythonでYouTube Data API v3のSearch:List操作する際に参考にした動画
- YouTube Data APIドキュメント上でのテスト実行
- YouTube Data APIを利用するPythonによるコーディング例
- YouTube Data APIと通信し、Serviceオブジェクトの生成
- search().list()メソッドによってYouTube内の動画・チャンネル・プレイリストをキーワード検索
- search.list()メソッドのオプションを一部解説
- 月ごとに何本の動画がアップロードされているか、月ごとの投稿本数を調べる
- YouTube Data APIで実装したものを手早く共有したい場合、StreamlitおよびStreamlit Community Cloudがおすすめ
Category: 開発・プログラミング | エンジニアリング
Tags: Python | YouTube・動画発信 | API