Spotifyが好きすぎてWeb APIを使ってみた

みなさんこんにちは。
Spotify大好き古屋です。
上にも書いたように、ここ最近音楽を聴くときは専らSpotifyを利用しています。
自分の周りでは意外と利用している人が少なく寂しいのですが、
登録されているアーティストの多さや自動プレイリストの作成が便利すぎるので、
ぜひ使ってみてはいかがでしょうか(回し者ではありません。Spotify愛です)。
そんなSpotifyはWeb APIを公開しています。
今回はそのAPIを使ってみたいと思います。
アカウントの準備
今回のAPIを使用するためには、Spotifyアカウントを用意する必要があります。
普段からSpotifyを利用されている方はそのアカウントを使用できます。
用意のない場合はここからFreeアカウントを作成しましょう。
アカウントの用意ができたら、ここからDevelopersアカウントの設定を行います。
利用規約への同意とSpotifyアカウントでのログインが必要です。
Spotify クライアントアプリケーションの作成
問題なく設定が完了すると以下の様なダッシュボードが表示されます。
ここでアプリケーションの作成などを行うことができます。
実際に「CREATE AN APP」から作成してみましょう。
アプリケーション名と概要、種別を選択します。
問題なければこのようにアプリケーションの画面に遷移するかと思います。
ここで表示される
Client ID
Client Secret
を後々使用するので確認しておきます。
これでクライアントアプリケーションの作成・用意は完了です。
Spotifyにアクセス
続いて作成したアプリケーションからAPIをコールしてSpotifyにアクセスします。
ここでアクセス認証が必要になります。
公式のドキュメントに詳細がありますのでここでの説明は省略しますが、
3つの認証方法が用意されていて、
それぞれ用途が異なるようなので作りたいものに併せて変えていく必要があるかと思います。
今回は、アプリケーションの認証のみ行うClient Credentialsフローで進めます。
Client Credentialsフローとは、
トークンエンドポイントにトークンリクエストを送りアクセストークンを受け取るというフローで、
ユーザーアカウントを紐付ける必要がないので情報の取得などのみの使用に適しています。
更に詳細な説明はOAuth2.0のフローについて調べてみてください。
ではまず、トークンを取得するためにアプリケーションの認証を行います。
上記で取得した
Client ID
Client Secret
をbase64でエンコードが必要とのことなので、
以下のコマンドをターミナル上で実行します。
echo -n 取得したClient ID:取得したClient Secret | base64
エンコードされた文字列が表示されるので、
以下のように認証リクエストを実行します。
curl -X "POST" -H "Authorization: Basic ○○○○○" -d grant_type=client_credentials https://accounts.spotify.com/api/token
※ ○○○○○の部分にエンコードされた文字列を記載します。
問題なければ以下のようにアクセストークンが返ってくるかと思います。
{"access_token":"〇〇〇〇","token_type":"Bearer","expires_in":3600,"scope":""}
これで認証とアクセストークンの取得ができたので、
Spotifyのデータにアクセスできるようになりました。
APIのコールの際にはここを参考に行います。
例えばアーティストの情報を取得するのであれば以下のようにします。
curl -H "Authorization: Bearer ○○○○" GET https://api.spotify.com/v1/artists/0deIjoDjl9g9Zpw0sCIOHh?si=fzdSyl0qTGy7rY0OirSpLA
※○○○○にはアクセストークンを
すると指定したアーティストの情報が返ってきました。
{
"external_urls" : {
"spotify" : "https://open.spotify.com/artist/0deIjoDjl9g9Zpw0sCIOHh"
},
"followers" : {
"href" : null,
"total" : 95963
},
"genres" : [ "brostep", "deep big room", "edm", "electro house", "electronic trap", "moombahton" ],
"href" : "https://api.spotify.com/v1/artists/0deIjoDjl9g9Zpw0sCIOHh",
"id" : "0deIjoDjl9g9Zpw0sCIOHh",
"images" : [ {
"height" : 640,
"url" : "https://i.scdn.co/image/db75914d44902c6618f14e877efda537f18f93b7",
"width" : 640
}, {
"height" : 320,
"url" : "https://i.scdn.co/image/e6cac744f5beb0a01fb522b655a320ecd999fe23",
"width" : 320
}, {
"height" : 160,
"url" : "https://i.scdn.co/image/d0975965759e6095c2f6e81debcf50ddda62df30",
"width" : 160
} ],
"name" : "Valentino Khan",
"popularity" : 60,
"type" : "artist",
"uri" : "spotify:artist:0deIjoDjl9g9Zpw0sCIOHh"
}
様々な情報を見ることができますが、
ここで面白いのが
“popularity”
の項目で、この値は0~100で表現されこの値が100に近づくほど
世間により認知されているアーティストということになります。
これでいうとValentino Khanはpopularityが60なのでそこそこ有名ということになります。
最近ニューアルバムをリリースしたGorillazのpopularityは81でした。
またアーティストの類似アーティストを表示したり、
アルバムの情報などの取得も可能です。
これらをうまく組み合わせれば何か面白いものが作れそうな気がしますね。
まとめ
今回は純粋にSpotifyのAPIをコールするという所までになってしまいましたが、
上記したように今度は実際に何か面白いアプリケーションを作れたらなと思います。
(なかなかアイデアが思いつきませんが・・・)
参考
https://dev.classmethod.jp/etc/about-using-of-spotify-api/
https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f