YouTube Data APIでできること[サンプルあり]
                        
					2021.06.30
                                                
                                                最近ではYouTubeを使って情報収集をすることも珍しく無くなってきておりますが、YouTubeにはいくつかAPIが用意されていて、プログラムからデータを取得することができるようになっています。
この記事では、PHPのサンプルを用いたAPIの使い方と、どんなデータを取得することができるのかを紹介したいと思います。
APIの種類
YouTubeには以下のようなAPIが用意されています
本記事では、YouTube Data APIを使用してAPIの使い方を紹介します。
APIを使用する準備
アカウントの作成
まずYouTube APIを使用するためにはYouTubeにログインできるアカウントが必要になりますのでアカウントを用意します。
APIキーの発行
これでAPIを使用する準備が整いました、それでは早速APIを使ってYouTubeからデータを取得してみましょう。
YouTube Data APIをつかったプログラム
キーワードを指定して、その検索結果を取得する
まずはキーワードを指定して動画の検索を行います。
define('YOUTUBE_API_KEY', ‘****’); //取得したAPIキーを設定してください
$url = "https://www.googleapis.com/youtube/v3/search";
$part = array(
    'snippet',
);
$query = array(
    'key' => YOUTUBE_API_KEY,
    'q' => ‘Googleオフィスアワー’, 
    'part' => implode(",",$part),
    'order' => 'date',
    'maxResults' => 10,
    'type' => 'video',
);
$res = curl($url, $query);
echo $res;
function curl($url, $query){
    $param = http_build_query($query, '', '&');
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url."?".$param);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;
}
ソースの解説をします。
- 1行目
 
	先程取得したAPIキーを設定しています。
- 3行目
 
	このサンプルでは検索を行うので検索用APIのURLを指定します。
- 5行目、11行目
 
	取得したいデータの種別をカンマ区切りで指定します
	snippetはタイトルや説明文を取得します。
- 10行目
 
	検索する文字列を指定します。
- 12行目〜13行目
 
	取得するデータの件数とソート順を指定します。
- 14行目
 
	検索対象を指定します。
- 21行目〜29行目
 
	APIのリクエストはcurlで行います
より詳しい情報はYouTube Date APIのガイドラインに記載されておりますので確認してみてください。
https://developers.google.com/youtube/v3/docs/search/list
上記のプログラムより以下の結果が取得できます。
{
  "kind": "youtube#searchListResponse",
  "etag": "jE8NsrXJFpbCPccED6S6nzOW74c",
  "nextPageToken": "CAoQAA",
  "regionCode": "JP",
  "pageInfo": {
    "totalResults": 89062,
    "resultsPerPage": 10
  },
  "items": [
    {
      "kind": "youtube#searchResult",
      "etag": "L0i7XDYvpN2UeTx-LymCkr3j81k",
      "id": {
        "kind": "youtube#video",
        "videoId": "5ziPqkIvAyM"
      },
      "snippet": {
        "publishedAt": "2021-06-24T03:00:13Z",
        "channelId": "UCWf2ZlNsCGDS89VBF_awNvA",
        "title": "Japanese Google ... 2021 年 06 月 24 日)",
        "description": "司会:金谷武明  ...",
        "thumbnails": {
          "default": {
            "url": "https://i.ytimg.com/vi/5ziPqkIvAyM/default.jpg",
            "width": 120,
            "height": 90
          },
          "medium": {
            "url": "https://i.ytimg.com/vi/5ziPqkIvAyM/mqdefault.jpg",
            "width": 320,
            "height": 180
          },
          "high": {
            "url": "https://i.ytimg.com/vi/5ziPqkIvAyM/hqdefault.jpg",
            "width": 480,
            "height": 360
          }
        },
        "channelTitle": "Google Search Central",
        "liveBroadcastContent": "none",
        "publishTime": "2021-06-24T03:00:13Z"
      }
    },
  …
  ]
}
「Googleオフィスアワー」で検索を行った際の結果がjson形式で返されます。
snippetの中身を見ると、動画のタイトルやチャンネル、説明文が取得できていることが確認できます。
動画を指定して、動画の情報を取得する
今度は先程取得した検索結果にあるvideoIdを使用して、動画の情報を取得します。
$url = "https://www.googleapis.com/youtube/v3/videos";
$part = array(
    'snippet',
    'statistics',
);
$query = array(
    'key' => YOUTUBE_API_KEY,
    'part' => implode(",",$part),
    'type' => 'video',
    'id' => '5ziPqkIvAyM',
);
$res = curl($url, $query);
ソースの解説をします。
- 1行目
 
	このサンプルでは動画情報を取得するので動画用APIのURLを指定します。
- 3行目、4行目
 
	取得したいデータの種別をカンマ区切りで指定します
	statisticsは再生回数やlike数等を取得します。
- 11行目
 
	取得したい動画のidを指定します。
{
  "kind": "youtube#videoListResponse",
  "etag": "dqVr-QR1br3QyHXs4QVFTppGY_k",
  "items": [
    {
      "kind": "youtube#video",
      "etag": "j-jaGj6KviQssVRkgyxHzMDvlWQ",
      "id": "5ziPqkIvAyM",
      "snippet": {
        "publishedAt": "2021-06-24T03:00:13Z",
        "channelId": "UCWf2ZlNsCGDS89VBF_awNvA",
        "title": "Japanese Google ... 2021 年 06 月 24 日)",
        "description": "司会…してみてください。",
        "thumbnails": {
          "default": {
            "url": "https://i.ytimg.com/vi/5ziPqkIvAyM/default.jpg",
            "width": 120,
            "height": 90
          },
          "medium": {
            "url": "https://i.ytimg.com/vi/5ziPqkIvAyM/mqdefault.jpg",
            "width": 320,
            "height": 180
          },
          "high": {
            "url": "https://i.ytimg.com/vi/5ziPqkIvAyM/hqdefault.jpg",
            "width": 480,
            "height": 360
          },
          "standard": {
            "url": "https://i.ytimg.com/vi/5ziPqkIvAyM/sddefault.jpg",
            "width": 640,
            "height": 480
          }
        },
        "channelTitle": "Google Search Central",
        "categoryId": "28",
        "liveBroadcastContent": "none",
        "localized": {
          "title": "Japanese Google ... 2021 年 06 月 24 日)",
          "description": "司会…してみてください。"
        },
        "defaultAudioLanguage": "ja"
      },
      "statistics": {
        "viewCount": "1151",
        "likeCount": "46",
        "dislikeCount": "2",
        "favoriteCount": "0",
        "commentCount": "1"
      }
    }
  ],
  "pageInfo": {
    "totalResults": 1,
    "resultsPerPage": 1
  }
}
指定した動画情報がjson形式で返されます。
statisticsの中身を見ると、再生回数やlikeの数が取得できていることが確認できます。
まとめ
今回はふたつのサンプルを上げてYouTubeのAPIを紹介させて頂きました。
YouTubeにはもちろんこれらのAPI以外にもたくさんのAPIが存在しています。
本記事は、YouTubeのAPIを使用したいけれど使い方がわからない方の手助けになれたら幸いとなります。
	
関連