Python youtube Data API v3の使い方

Python

GCP(Google Cloud Platform)のyoutube APIを使って、検索キーワードを元に、video_idとchannel_idを取得する方法を紹介致します。

動作確認はJupyterLabで行っています。

JupyterLabのインストールと使い方は、以下の記事で紹介しています。

Python JupyterLabのインストールと基本的な使い方
JupyterLabのインストールと基本的な使い方について紹介致します。JupyterLabはブラウザ上で動作する対話型実行環境です。実行結果を逐次確認することができます。インストール方法として3つ紹介致します。JupyterLabではmarkdownで記述でき、またcodeで実行された結果をすぐに確認できます。

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とサービスページに移動する。

search youtube-data-api-v3

「youtube」で検索するとYouTube Data API v3が出てくるので、選択。

youtube-data-api-v3

「有効にする」をクリック。

youtube-data-api-v3-認証情報

「有効なAPIとサービス」にYouTube Data  API v3 が表示されることを確認します。

「認証情報」をクリックして、キー取得に進みます。

YouTube Data API v3 キーの取得

続いて、キーを取得します。

youtube-data-api-v3-認証情報の作成

「認証情報」ページから、「認証情報を作成」をクリックして「APIキー」を選択します。

youtube-data-api-v3-key

キーをコピーして、テキストにメモしておきます。

キーの使用を制限する場合、「キーを制限」を選択して、APIに「YouTube Data  API v3」を選択します。

youtube-data-api-v3-keyの制限

2.サンプルコードの実行

参考ドキュメントは以下になります。

概要(Overview)

Pythonサンプル

準備

!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

sample-youtube-search-result

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)

sample-result_Dataframe

キーワード検索して、youtubeのvideo_idとchannel_idを一覧で取得できたことがわかります。