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"
を追加。アーティスト名が "米津玄師"
となり、日本語のアーティスト名が取得できている。
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 と同様の結果