APIを利用してYouTubeチャンネルに関連した画像情報を取得することができる。チャンネルに関連する主な画像として下記の2つがある。
- チャンネルアイコン
- チャンネルアート
チャンネルアイコンは、チャンネルのプロフィール画像で、縦横のサイズが等しい正方形または円形の画像となる。小、中、大の3種類の画像がある。
チャンネルアートは、チャンネルページ上部の背景/バナー画像として表示されるもので、各デバイス向けアプリケーション/画面解像度に合わせて複数の画像がある。
下記のコードは、これらの画像を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);
$channelId = "UCrXUsMBcfTVqwAS7DKg9C0Q"; // YouTube Japan
$params = [
'id' => $channelId,
];
$response = $youtube->channels->listChannels('snippet,brandingSettings', $params);
foreach ($response['items'] as $i => $item)
{
echo "channelId: {$item['id']}\n";
foreach ($item['snippet']['thumbnails'] as $key => $img)
{
echo "$key ({$img['width']}px x {$img['height']}px):\n";
echo "{$img['url']}\n";
}
foreach ($item['brandingSettings']['image'] as $key => $imgUrl)
{
if (!is_null($imgUrl))
{
// APIと関係ない、単に出力を見やすくするための処理、読み飛ばして良い
$parts = preg_split('/(?=[A-Z])/', $key, -1, PREG_SPLIT_NO_EMPTY);
array_pop($parts);
array_pop($parts);
$width = preg_replace('/^.+=w([0-9]+).+$/', '$1', $imgUrl);
echo "$key (".implode(' ', $parts).", width={$width}px):\n";
echo "$imgUrl\n";
}
}
}
チャンネルアイコンの画像情報は、snippet.thumbnails プロパティに格納されている。また、チャンネルアートの画像情報は、brandingSettings.image プロパティに格納されている。
※追記:brandingSettings.image プロパティは2020年9月9日に deprecated となっている。
https://developers.google.com/youtube/v3/revision_history#september-9,-2020
APIリクエストは listChannels() メソッドを使って行い、part引数に上記 snippet と brandingSettings の2つを指定する。フィルタのパラメータ指定では、id パラメータにチャンネルIDを指定すると、そのチャンネルの画像情報を取得できる。カンマ区切りでチャンネルIDを複数指定できる。
snippet.thumbnails プロパティには、default、medium、high の3つキーがあり、それぞれに url、width、height の値が保持されている。
defaulturl: 小サイズ(デフォルト)の画像URL,width: 88,height: 88
mediumurl: 中サイズの画像URL,width: 240,height: 240
highurl: 大サイズの画像URL,width: 800,height: 800
brandingSettings.image プロパティに格納されているデータには、各デバイス向けアプリケーション/画面解像度の画像URLが保持されている。代表的なものを挙げると下記となる。
bannerImageUrl- ウェブサイトのチャンネルページに表示される画像URL(サイズ 1060px x 175px)
bannerMobileImageUrl- モバイルアプリケーションのチャンネルページに表示される画像URL(サイズ 640px x 175px)
bannerTabletImageUrl- タブレットアプリケーションのチャンネルページに表示される画像URL(サイズ 1707px x 283px)
bannerTvImageUrl- テレビアプリケーションのチャンネルページに表示される画像URL(サイズ 2120px x 1192px)
また、画面解像度別には、モバイルアプリケーション向けを例にすると、bannerMobileMediumHdImageUrl、bannerMobileHdImageUrl のように区分されて画像URLが保持されている。