YouTube Data API v3を利用して最も人気のある動画を取得する

APIを使ってYouTubeで最も人気のある動画を取得することができる。

地域や動画カテゴリを指定して取得することが可能で、下記は日本の音楽カテゴリで最も人気のある動画を取得する例。


require_once '/path/to/google-api-php-client/vendor/autoload.php';

$client = new Google_Client();
$client->setDeveloperKey("_API_KEY_");
$youtube = new Google_Service_YouTube($client);

$params = [
  'chart' => 'mostPopular',
  'regionCode' => 'JP',
  'videoCategoryId' => '10', // 音楽
  'maxResults' => 50,
];

do {
  $response = $youtube->videos->listVideos('snippet', $params);

  foreach ($response['items'] as $i => $item)
  {
    echo "#$i\n";
    echo "id         : {$item['id']}\n";
    echo "channelTitle: {$item['snippet']['channelTitle']}\n";
    echo "title      : {$item['snippet']['title']}\n";
  }

  echo "\n";
  echo "# nextPageToken: {$response['nextPageToken']}\n";
  echo "# prevPageToken: {$response['prevPageToken']}\n";
  echo "# totalResults: {$response['pageInfo']['totalResults']}\n";
  echo "# resultsPerPage: {$response['pageInfo']['resultsPerPage']}\n\n";

  $pageToken = $response['nextPageToken'];
  $params['pageToken'] = $pageToken;
  sleep(1);

} while (!empty($pageToken));

listVideos() を呼ぶときのフィルタのパラメータとして chart パラメータに mostPopular を指定すると最も人気のある動画が返ってくる。上記のコードでは、その他に regionCodeJPvideoCategoryId10(音楽)を指定して、リクエスト対象が日本の音楽カテゴリになるようにしている。maxResults は、APIレスポンスに含める結果の動画件数を指定する。

動画タイトルなどの基本情報は listVideos()part 引数に snippet を指定すると得られる。APIレスポンスとして返ってくる snippet プロパティには下記の動画・基本情報が格納されている。

  • snippet.publishedAt:動画のアップロード日時
  • snippet.channelId:動画のチャンネルID
  • snippet.title:動画のタイトル
  • snippet.description:動画の説明
  • snippet.thumbnails:動画のサムネイル画像情報
  • snippet.channelTitle:動画のチャンネル名
  • snippet.tags:動画に付けられたタグ
    • 配列データ(動画にタグが付けられていない場合は NULL
  • snippet.categoryId:動画のカテゴリID

上記コードを実行すると、日本の音楽カテゴリで最も人気のある動画が人気上位から順に出力される。

なお、2ページ目以降の結果を取得するには、フィルタに pageToken パラメータを追加し、その値に nextPageToken の値(上記の実行結果の例では CDIQAA)を指定すると得られる。nextPageToken は、次のページ結果がある場合、APIレスポンスに含まれている。