YouTube Data APIでできること[サンプルあり]

Webサイト制作
Web開発
2021.06.30

最近ではYouTubeを使って情報収集をすることも珍しく無くなってきておりますが、YouTubeにはいくつかAPIが用意されていて、プログラムからデータを取得することができるようになっています。
この記事では、PHPのサンプルを用いたAPIの使い方と、どんなデータを取得することができるのかを紹介したいと思います。

APIの種類

YouTubeには以下のようなAPIが用意されています

  • YouTube Player API 
  • サイトに埋め込んだ動画に対して、音量変更やシーク等、再生内容をコントロールできるAPIです。

  • YouTube Reporting API
  • 動画の視聴概要等、アナリティクスの情報を取得できるAPIです。

  • YouTube Data API
  • 動画の一覧やいいね、コメントの数等、動画のデータを取得できるAPIです。

本記事では、YouTube Data APIを使用してAPIの使い方を紹介します。

APIを使用する準備

アカウントの作成

まずYouTube APIを使用するためにはYouTubeにログインできるアカウントが必要になりますのでアカウントを用意します。

APIキーの発行

  • アカウントが用意できたらAPIキーを発行するためにこちらへアクセスします
  • https://console.developers.google.com/?hl=JA

  • 先程作成したアカウントでログインを行い「プロジェクトの選択」→「新しいプロジェクト」を選択します。
  • プロジェクト名をつけてプロジェクトを作成します
  • プロジェクトを作成したら、「認証情報」→「認証情報を作成」→「APIキー」の順に選択します
  • 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を指定します。

      こちらもより詳しい情報はYouTube Date APIのガイドラインに記載されておりますので確認してみてください。
      https://developers.google.com/youtube/v3/docs/videos/list

      {
        "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を使用したいけれど使い方がわからない方の手助けになれたら幸いとなります。

SEOやWEB制作に関する情報を検索する

コラム

最新コラム

人気コラム

過去の記事

ご質問やご相談などお気軽にお問い合わせください。