YouTube Data API v3を利用してチャンネルの画像情報を取得する

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引数に上記 snippetbrandingSettings の2つを指定する。フィルタのパラメータ指定では、id パラメータにチャンネルIDを指定すると、そのチャンネルの画像情報を取得できる。カンマ区切りでチャンネルIDを複数指定できる。

snippet.thumbnails プロパティには、defaultmediumhigh の3つキーがあり、それぞれに urlwidthheight の値が保持されている。

  • 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)

また、画面解像度別には、モバイルアプリケーション向けを例にすると、bannerMobileMediumHdImageUrlbannerMobileHdImageUrl のように区分されて画像URLが保持されている。