YouTubeのAPIを使ってデータ収集してみる

YouTube APIを使って、YouTubeにどのような動画が投稿されているのか調査してみたいと思います。
現在のところ、YouTube API は 以下の4種類が公開されているみたいです。

今回は 「YouTube Data API v3」 という検索や動画投稿に関する API を使います。

YouTube Data API v3の機能

APIの使い方は以下の場所に記載されてます。

動画の視聴回数のデータを取得

Videos  |  YouTube Data API  |  Google Developers

特定期間の特定キーワードの動画公開数を検出

Search: list  |  YouTube Data API  |  Google Developers

YouTube API利用の流れ

APIキー取得

Googleアカウントで開発画面にアクセス

console.developers.google.com

プロジェクト作成

[プロジェクトを作成]をクリックします。
f:id:a1026302:20201105154954j:plain
プロジェクト名を入力して[作成]ボタンをクリックします。
f:id:a1026302:20201105155105j:plain
[作成]ボタンクリック後にしばらくすると通知が届きます。
作成したプロジェクトを選択します。
f:id:a1026302:20201105155227j:plain

API設定(認証情報取得)

作成したプロジェクトをクリックするとダッシュボード画面に遷移します。
[APIの概要に移動]というところをクリックします。
f:id:a1026302:20201105155902j:plain
[APIとサービス]という画面が表示されるので[+ APIとサービスの有効化]というところをクリックします。
f:id:a1026302:20201105160238j:plain
[APIライブラリ]という画面が表示されるので[YouTube Data API v3]を選択します。
f:id:a1026302:20201105160441j:plain
[YouTube Data API v3]画面で[有効にする]ボタンをクリックします。
f:id:a1026302:20201105160536j:plain
以下の画面が表示されるので[認証情報を作成]ボタンをクリックします。
f:id:a1026302:20201105161205j:plain
認証情報画面が表示されるので、[YouTube Data API v3]を選択します。
f:id:a1026302:20201105161304j:plain
フォームが変わるので必要情報を選択し[必要な認証情報]ボタンをクリックします。
f:id:a1026302:20201105161508j:plain
認証情報が生成されるので[完了]ボタンをクリックします。
f:id:a1026302:20201105162020j:plain
APIキーが作成できたので控えておきます。
f:id:a1026302:20201105162210j:plain

動画情報収集スクリプト作成

pythonモジュール追加

以下のコマンドでpythongoogle 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'
        }
    },
   .
   .
   .
}