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
の値が保持されている。
default
url
: 小サイズ(デフォルト)の画像URL,width
: 88,height
: 88
medium
url
: 中サイズの画像URL,width
: 240,height
: 240
high
url
: 大サイズの画像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が保持されている。