GCP(Google Cloud Platform)のyoutube APIを使って、検索キーワードを元に、video_idとchannel_idを取得する方法を紹介致します。
動作確認はJupyterLabで行っています。
JupyterLabのインストールと使い方は、以下の記事で紹介しています。
1.YouTube Data API v3サービスの有効化とAPIキーの取得
YouTube Data API v3の有効化とAPIの取得について紹介します。
利用するにはまず、GCP(Google Cloud Platform)へアカウント登録する必要があります。
アカウント登録時にクレジットカードかPayPalの登録をする必要がありますが、90日間有効の$300相当が無料で使えます。
この無料枠を利用してテキストから音声出力をPythonで行います。
無料期間を終了しても、手動でアップデートしない限りは請求されることはありません。
GCPへのアカウント登録が完了したら、今回利用するYouTube Data API v3の有効化をしていきます。
YouTube Data API v3の有効化
APIとサービスページに移動する。
「youtube」で検索するとYouTube Data API v3が出てくるので、選択。
「有効にする」をクリック。
「有効なAPIとサービス」にYouTube Data API v3 が表示されることを確認します。
「認証情報」をクリックして、キー取得に進みます。
YouTube Data API v3 キーの取得
続いて、キーを取得します。
「認証情報」ページから、「認証情報を作成」をクリックして「APIキー」を選択します。
キーをコピーして、テキストにメモしておきます。
キーの使用を制限する場合、「キーを制限」を選択して、APIに「YouTube Data API v3」を選択します。
2.サンプルコードの実行
参考ドキュメントは以下になります。
準備
!pip3 install google-api-python-client from apiclient.discovery import build import json with open('secret-key.json') as f: secret = json.load(f)
pip installコマンド実行後、Successfully installedと出ればOKです。
youtube apiの定義
以下でyoutube apiを使えるようにします。
secret[‘key’]はGCPからコピーして、secret-key.jsonファイルから読み取った値にになります。
DEVELOPER_KEY = secret['key'] YOUTUBE_API_SERVICE_NAME = "youtube" YOUTUBE_API_VERSION = "v3" youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,developerKey=DEVELOPER_KEY)
search().list methodを利用したvideo,channel検索
q = 'Python youtube' max_results = 50 search_response = youtube.search().list( q=q, part="id,snippet", order='viewCount', type='video', maxResults=max_results ).execute()
qは検索キーワードです。
max_resultsは検索結果を最大50件まで表示します。
itemsで検索結果の取得
search_responseの中のitemsを取り出します。
items = search_response['items'] item = items[0] item
search_responseの中からitemsの1件目を取得できていることがわかります。
idの中のvideoIdとsinppetの中のchannelIdを取得しつつ、データ整形をしていきます。
データの整形
pandasを使って、データを整形していきます。
import pandas as pd
DataFrameを使って、video_idとchannel_idを一覧表示します。
items_id = [] items = search_response['items'] for item in items: item_id = {} item_id['video_id'] = item['id']['videoId'] item_id['channel_id'] = item['snippet']['channelId'] items_id.append(item_id) df_video = pd.DataFrame(items_id)
キーワード検索して、youtubeのvideo_idとchannel_idを一覧で取得できたことがわかります。