YouTube API を使って、YouTube にどのような動画が投稿されているのか調査してみたいと思います。
現在のところ、YouTube API は 以下の4種類が公開されているみたいです。
- YouTube Analytics API
- YouTube Data API v3
- YouTube Live API v3
- YouTube Reporting API
今回は 「YouTube Data API v3」 という検索や動画投稿に関する API を使います。
YouTube Data API v3の機能
API の使い方は以下の場所に記載されてます。
動画の視聴回数のデータを取得
特定期間の特定キーワードの動画公開数を検出
YouTube API 利用の流れ
API キー取得
Google アカウントで開発画面にアクセス
プロジェクト作成
[プロジェクトを作成]をクリックします。
プロジェクト名を入力して[作成]ボタンをクリックします。
[作成]ボタンクリック後にしばらくすると通知が届きます。
作成したプロジェクトを選択します。
API 設定(認証情報取得)
作成したプロジェクトをクリックするとダッシュボード画面に遷移します。
[APIの概要に移動]というところをクリックします。
[APIとサービス]という画面が表示されるので[+ APIとサービスの有効化]というところをクリックします。
[APIライブラリ]という画面が表示されるので[YouTube Data API v3]を選択します。
[YouTube Data API v3]画面で[有効にする]ボタンをクリックします。
以下の画面が表示されるので[認証情報を作成]ボタンをクリックします。
認証情報画面が表示されるので、[YouTube Data API v3]を選択します。
フォームが変わるので必要情報を選択し[必要な認証情報]ボタンをクリックします。
認証情報が生成されるので[完了]ボタンをクリックします。
APIキーが作成できたので控えておきます。
動画情報収集スクリプト作成
pythonモジュール追加
以下のコマンドでpythonでgoogle apiを使用するためのモジュールを追加します。
$ pip install google-api-python-client
スクリプト作成
動画情報を取得するスクリプトです。
from googleapiclient.discovery import build from googleapiclient.errors import HttpError # API情報 DEVELOPER_KEY = '[APIキー]' YOUTUBE_API_SERVICE_NAME = 'youtube' YOUTUBE_API_VERSION = 'v3' youtube = build( YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY ) search_response = youtube.search().list( q='[検索したいキーワード]', part='id,snippet', ).execute() print (search_response)
以下の情報が取得できます。(自分で投稿した動画を検索してみる)
{ 'kind': 'youtube#searchListResponse', 'etag': '9qvr1REZ0E9pqCGP81uLxkETiDI', 'nextPageToken': 'CAUQAA', 'regionCode': 'JP', 'pageInfo': { 'totalResults': 7321, 'resultsPerPage': 5 }, 'items': [ { 'kind': 'youtube#searchResult', 'etag': 'Xbh8jXRyjRgLiEQJMl1QOCahF3s', 'id': { 'kind': 'youtube#video', 'videoId': '4b-X7l7-ZhE' }, 'snippet': {'publishedAt': '2020-11-02T07:39:11Z', 'channelId': 'UCHOXeBiIMVlu3-1xRDKrM8w', 'title': '【Unityで2DRPG】 猫の冒険 iTweenでプロローグ', 'description': '2DRPGを作ってUnityの勉強をしてます。', 'thumbnails': { 'default': { 'url': 'https://i.ytimg.com/vi/4b-X7l7-ZhE/default.jpg', 'width': 120, 'height': 90}, 'medium': { 'url': 'https://i.ytimg.com/vi/4b-X7l7-ZhE/mqdefault.jpg', 'width': 320, 'height': 180 }, 'high': { 'url': 'https://i.ytimg.com/vi/4b-X7l7-ZhE/hqdefault.jpg', 'width': 480, 'height': 360 } }, 'channelTitle': 'いろいろつくろー', 'liveBroadcastContent': 'none', 'publishTime': '2020-11-02T07:39:11Z' } }, . . . }