Spotify Web API を利用してアーティストの人気の曲情報を取得する

Spotify Web APIを利用してアーティストの人気の曲情報を取得することができる。取得できるのは、人気度順にソートされた最大10曲から成る曲情報となる。

下記は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']);

$artistId = '64tJ2EAv1R6UaZqc4iOCyj';
$params = [
  'country' => 'JP'
];
$response = $client->get("artists/$artistId/top-tracks", $params);
var_dump($response);

アーティストの人気曲の情報は、下記URL

https://api.spotify.com/v1/artists/{id}/top-tracks

に対して、パスのパラメータ id にアーティストIDを指定しGETリクエストを送信すれば良い。また、このとき、必須のクエリパラメータとして、country パラメータに2文字の国名コードを指定する必要がある。

APIリクエスト実行後、人気曲の情報はレスポンスデータの tracks キーに配列データ(最大10曲)として保持されている。配列の各データには、曲情報に加え、アルバムとアーティスト情報も含まれている。曲名は name キー、再生可能なMP3形式の曲ファイル(30秒のプレビュー版)へのURLが preview_url キーに保持されている。曲の人気度は popularity キーの値を参照すれば良い。また、アルバムとアーティスト情報は、それぞれ album キーと artists キーに保持されている。