YouTubeからデータを取得するコードを書いていきましょう!
YouTube APIキーを使ってデータを取得していくので、まだ取得できてないよって方はこちらを参考にしてください。
それではいきましょう!
事前にインストール
まずはターミナル(コマンドプロンプト)で以下のコードを入力しましょう。
YouTubeのAPIクライアントを組み立てるのに必要となります。
pip install google-api-python-client
次に環境変数を引き渡すのに必要なツールの準備をします。
まずはHomebrewのインストール、下記をターミナルで実行します。
こちらはツールのインストールに必要になります。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストールできたら、foregoというツールをインストールします。
このforegoツールで、スクリプト実行時に環境変数を引き渡すことができるようになります。
brew install forego
完了したら次にいきましょう!
環境変数からAPIキーを取得する
事前に保存していたYouTube APIキーを.envから取り出すコードです。
import os
YOUTUBE_API_KEY = os.environ['YOUTUBE_API_KEY']
上記のコードだけで取り出せるので、毎回APIキーをコピペする必要がなく、セキュリティとしても良きです!
全体のコード
こちらがYoutubeから”プログラミング”と調べた結果データを取得する全体のコードになります。
import os
from apiclient.discovery import build
YOUTUBE_API_KEY = os.environ['YOUTUBE_API_KEY']
youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY)
search_response = youtube.search().list(
part = 'snippet',
q ='プログラミング',
type = 'video',
).execute()
for item in search_response['items']:
print(item['snippet']['title'])
順番に見ていきましょう!
1〜2行目では、osライブラリとbuildライブラリをインストールしています。
import os
from apiclient.discovery import build
4行目では先ほど説明したとおり、APIキーの取得をしています。
YOUTUBE_API_KEY = os.environ['YOUTUBE_API_KEY']
6行目ではYouTubeのAPIクライアントを組み立てています
第1~3引数はこのように指定しています。
build(“API名”, “APIのversion”, “APIキー”)
youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY)
8〜12行目では実際に検索しています。
8行目:search.list()メソッドでHttpRequestオブジェクトが得られます。
9行目−11行目:その際の条件を指定している
12行目:executeメソッドの実行でHTTPリクエストが送られ、APIレスポンスが得られる。
search_response = youtube.search().list(
part = 'snippet',
q ='プログラミング',
type = 'video',
).execute()
14〜15行目で動画のタイトルを取得し、print関数で表示させています。
for item in search_response['items']:
print(item['snippet']['title'])
実行してみよう!
ターミナルから実行するときに普段使用している
python3 ファイル名.py
では、うまく実行できません。必ず先頭にforego runをつけて実行しましょう。
forego runを先頭につけることで、スクリプト実行時に環境変数を引き渡すことができます。
forego run python3 ファイル名.py
実行が成功すると以下のように表示されます!(2021年5月2日現在)
今回YouTube APIを使って実際にデータを取得してみました!
これらを応用して、データ分析に使用できると思いますのでぜひ適当に遊んでみてください!
またYouTubeデータ関連記事を書くかもしれません。
コメント