独自にYouTubeチャンネルのプロフィール情報ページを作成することを想定し、プロフィール情報ページは下記のデータから構成されるものと定義し、APIでこれらのデータを取得することを考えてみる。
- チャンネルアイコン画像
- チャンネルアート画像
- チャンネル名
- アップロード動画数
- 登録者数
- 動画再生回数
- チャンネルに関連付けられた国
- チャンネル作成日
これらのデータは、YouTube Data APIの channels
リソースに含まれるプロパティと下記のように対応する。
snippet
snippet.thumbnails
:チャンネルアイコン画像snippet.title
:チャンネル名snippet.country
:チャンネルに関連付けられた国snippet.publishedAt
:チャンネル作成日
statistics
statistics.videoCount
:アップロード動画数statistics.subscriberCount
:登録者数statistics.viewCount
:動画再生回数
brandingSettings
brandingSettings.image
:チャンネルアート画像
※追記:brandingSettings.image
プロパティは2020年9月9日に deprecated となっている。
https://developers.google.com/youtube/v3/revision_history#september-9,-2020
これを踏まえて、APIを利用して上記のプロパティを取得するコードの例が下記。
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);
$json = file_get_contents("channelIds.json");
$channelIds = json_decode($json, true);
foreach (array_chunk($channelIds, 50) as $ids)
{
$params = [
'id' => implode(",", $ids),
'maxResults' => 50,
];
$response = $youtube->channels->listChannels('snippet,statistics,brandingSettings', $params);
foreach ($response['items'] as $i => $item)
{
echo "#$i\n";
echo "id : {$item['id']}\n";
echo "title : {$item['snippet']['title']}\n";
echo "country : {$item['snippet']['country']}\n";
echo "publishedAt: {$item['snippet']['publishedAt']}\n";
echo "viewCount : {$item['statistics']['viewCount']}\n";
echo "subscriberCount: {$item['statistics']['subscriberCount']}\n";
echo "videoCount : {$item['statistics']['videoCount']}\n";
foreach ($item['snippet']['thumbnails'] as $key => $img)
{
echo "$key: {$img['url']}\n";
}
foreach ($item['brandingSettings']['image'] as $key => $imgUrl)
{
if (!is_null($imgUrl))
{
echo "$key: $imgUrl\n";
}
}
}
sleep(1);
}
前述のプロフィール情報に必要なプロパティをリクエストするには、listChannels()
メソッドの part
引数に snippet
、statistics
、brandingSettings
を指定すれば良い。
フィルタのパラメータとして、maxResults
パラメータには、APIレスポンスに含める結果の件数を指定する。デフォルト値は 5
、最大値は 50
となる。上記コードでは最大値 50
を指定している。また、id
パラメータにチャンネルIDを指定する。カンマ区切りで複数のチャンネルIDを指定できる。上記のコードでは、maxResults
パラメータに合わせて、カンマ区切りで一度に最大50のチャンネルIDを指定するようにしている。