ブログトップ

Spotify API でアーティスト名を日本語表記で取得する

Spotify API を使って楽曲の情報を取得する際、デフォルトの設定ではアーティスト名が英語(ローマ字)表記で取得されてしまいます。

$ curl -X "GET" "https://api.spotify.com/v1/tracks?ids=3v3FtJPI0TSSzBxNz2pHD6" -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer <自分の OAuth token>"
{
  "tracks" : [ {
    "album" : {
      "album_type" : "album",
      "artists" : [ {
        "external_urls" : {
          "spotify" : "https://open.spotify.com/artist/1snhtMLeb2DYoMOcVbb8iB"
        },
        "href" : "https://api.spotify.com/v1/artists/1snhtMLeb2DYoMOcVbb8iB",
        "id" : "1snhtMLeb2DYoMOcVbb8iB",
        "name" : "Kenshi Yonezu",
        "type" : "artist",
        "uri" : "spotify:artist:1snhtMLeb2DYoMOcVbb8iB"
      } ],
      "available_markets" : [ "JP" ],
// 以下略

▲ curl を使って「Lemon(米津玄師)」(ID: 3v3FtJPI0TSSzBxNz2pHD6)の楽曲情報を取得した例。アーティスト名がローマ字表記の "Kenshi Yonezu" になっている。

これを解決するには、リクエストヘッダに "Accept-Language: ja" を付与すれば OK です。おそらくデフォルトでは英語が優先されるようになっているため、「日本語で結果を返してほしい」と明示的に指定する必要があるというわけです。

$ curl -X "GET" "https://api.spotify.com/v1/tracks?ids=3v3FtJPI0TSSzBxNz2pHD6" -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer <自分の OAuth token>" -H "Accept-Language: ja"
{
  "tracks" : [ {
    "album" : {
      "album_type" : "album",
      "artists" : [ {
        "external_urls" : {
          "spotify" : "https://open.spotify.com/artist/1snhtMLeb2DYoMOcVbb8iB"
        },
        "href" : "https://api.spotify.com/v1/artists/1snhtMLeb2DYoMOcVbb8iB",
        "id" : "1snhtMLeb2DYoMOcVbb8iB",
        "name" : "米津玄師",
        "type" : "artist",
        "uri" : "spotify:artist:1snhtMLeb2DYoMOcVbb8iB"
      } ],
      "available_markets" : [ "JP" ],
// 以下略

▲ curl で -H "Accept-Language: ja" を追加。アーティスト名が "米津玄師" となり、日本語のアーティスト名が取得できている。

spotipy を使う場合

Python で Spotify API のラッパーライブラリ spotipy を利用する場合は、Spotify オブジェクトの初期化時に language='ja' を指定すると日本語表記で取得できるようになります。spotipy の内部では、先ほどの curl コマンドと同じようにヘッダに Accept-Language が設定されるようです。

from spotipy import Spotify
from spotipy.oauth2 import SpotifyClientCredentials

credentials = SpotifyClientCredentials(
    client_id='自分の client_id',
    client_secret='自分の client_secret')
sp = Spotify(auth_manager=credentials, language='ja')
res = sp.track('3v3FtJPI0TSSzBxNz2pHD6')
print(res)
# curl と同様の結果
投稿日: 2020年10月17日