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
を指定すると最も人気のある動画が返ってくる。上記のコードでは、その他に regionCode
に JP
、videoCategoryId
に 10
(音楽)を指定して、リクエスト対象が日本の音楽カテゴリになるようにしている。maxResults
は、APIレスポンスに含める結果の動画件数を指定する。
動画タイトルなどの基本情報は listVideos()
の part
引数に snippet
を指定すると得られる。APIレスポンスとして返ってくる snippet
プロパティには下記の動画・基本情報が格納されている。
snippet.publishedAt
:動画のアップロード日時snippet.channelId
:動画のチャンネルIDsnippet.title
:動画のタイトルsnippet.description
:動画の説明snippet.thumbnails
:動画のサムネイル画像情報snippet.channelTitle
:動画のチャンネル名snippet.tags
:動画に付けられたタグ- 配列データ(動画にタグが付けられていない場合は
NULL
)
- 配列データ(動画にタグが付けられていない場合は
snippet.categoryId
:動画のカテゴリID
上記コードを実行すると、日本の音楽カテゴリで最も人気のある動画が人気上位から順に出力される。
なお、2ページ目以降の結果を取得するには、フィルタに pageToken
パラメータを追加し、その値に nextPageToken
の値(上記の実行結果の例では CDIQAA
)を指定すると得られる。nextPageToken
は、次のページ結果がある場合、APIレスポンスに含まれている。