Spotify Web API を利用してアルバムのカタログ情報を取得する

Spotify Web APIを利用してアルバムのカタログ情報を取得することができる。前の記事で取り上げたニューリリース情報から得られるアルバム情報よりも詳細なものを取得することができ、主なものとしてアルバム内の曲情報を得ることができる。

下記はSpotify Web APIを利用してアルバムのカタログ情報を取得するコードの例。


class SpotifyApiClient
{
  private $rootEndpoint = 'https://api.spotify.com/v1/';

  private $accessToken;

  public function __construct($ACCESS_TOKEN)
  {
    $this->accessToken = $ACCESS_TOKEN;
  }

  public function get($path, array $queryParams)
  {
    $url = $this->rootEndpoint . $path;

    if (!empty($queryParams))
      $url .= '?' . http_build_query($queryParams);

    $response = $this->execCurlGET($url);
    sleep(1);

    return json_decode($response, true);
  }

  private function execCurlGET($url)
  {
    $cmd = 'curl' .
           " -H 'Authorization: Bearer {$this->accessToken}'" .
           " '$url'";

    echo "# $cmd\n";

    return shell_exec($cmd);
  }
}


$tokenFile = 'token_new.json';
$token = json_decode(file_get_contents($tokenFile), true);
$client = new SpotifyApiClient($token['access_token']);

$params = [
  'market' => 'JP',
];
$albumId = '4nLIK2uFzYUJqLAfJZYgLx';
$response = $client->get("albums/$albumId", $params);
var_dump($response);

アルバムのカタログ情報は、下記URLに対してGETリクエストを送信することで得ることができる。

https://api.spotify.com/v1/albums/{id}

パスのパラメータ id には、アルバムIDを指定する。

また、APIリクエスト時のオプションのクエリパラメータとして market パラメータに2文字の国名コードを指定することができる。このパラメータを指定すると、Spotifyユーザーのプロフィール設定に登録された国情報により、アルバム内の特定の曲がそのユーザーの国では入手不可となる場合に、そのユーザーの国で利用可能なオリジナル曲の別の実体の曲データがあれば、その情報をAPIレスポンスに入れてくれる(公式ドキュメントでは、この機能を「Track Relinking」と呼んでいる)。
※Spotifyは、それぞれのマーケット(国)で入手可能な複数の実体の曲データを保持している。これはアルバム内の曲がそれぞれの国で別のライセンスで複数回リリースされた場合に一般的に起こる。
※Track Relinkingの詳細は下記を参照のこと
Track Relinking Guide | Spotify for Developers

APIリクエスト実行後、APIレスポンスの tracks キー下の items キーにアルバム内の曲のリスト情報が配列データとして保持されている。曲数は total_tracks キーに保持されている。

items キーに保持された各曲のデータには name キーがあり、曲名を得るにはこの値を参照すれば良い。また、preview_url キーには、MP3形式の楽曲(30秒のプレビュー版)へのURLが保持されている。