MAGAZINE

ルーターマガジン

Ruby

Spotify APIをRubyで叩いて楽曲情報を取得する

2022.02.16
Pocket

こんにちは、学生アルバイトの河野です。今回は、音楽配信サービスであるSpotifyのAPIを利用して、楽曲の情報を取得する方法をご紹介します。

はじめに

新型コロナウイルスの流行が始まってから2年が経ちました。活動自粛の日々は続きます。私の日課であるレコードショップ巡りも、コロナ前とは違いなかなか気軽には足を運べなくなってしまいました。

そんな中、Spotifyに会員登録してさえいれば、APIを通してオンラインで曲を探すことが出来るという情報を見つけました。このサービスを利用すれば、古今東西の楽曲を家に居ながらにして楽しむことができるわけです。

今回は、APIを使うまでの準備、そして楽曲を探してみるところまで実行してみたいと思います。

実装

① API キーを取得する

まずは、下記リンクからSpotifyにログインします。

https://developer.spotify.com/dashboard/

ダッシュボードに移動することができたら、”My New App”と書かれた透明の枠をクリックします。

アプリの名前と説明を入力し、利用規約に同意したらcreateボタンを押してアプリを作成します。なお、今回作成するアプリでは、名前をTest_App、説明をAPI Testとしています。

Createをクリックすると、このような画面に遷移します。APIのクライアントキー取得や、アプリ設定の変更などを行う際にはこの画面を通して行うことになります。

今回はテストなので詳しい設定に関しては割愛しますが、より複雑な機能を利用する場合(プレイリストの作成や編集、自分のユーザーアカウント情報の編集)にはEDIT SETTINGSより追加の設定が必要になるので注意してください。

② 実行してみる

それでは早速Spotifyから楽曲情報を取得してみましょう!

今回はRubyにて簡単に操作できるように、RSpotifyというGemを使用したパターンを紹介します。

まずは先程取得したクライアントID、クライアントシークレットを利用して、簡単なテストコードを実行してみます。今回はいきものがかりの全アルバム名を取得するスクリプトを書きました。


  require 'RSpotify'

  #結果を日本語で取得するために設定しています。
  ENV['ACCEPT_LANGUAGE'] = "ja"

  #実際に実行する場合には、第一引数にクライアントID, 第二引数にクライアントシークレットを入れてください。
  RSpotify.authenticate([Client ID], [Client Secret])

  # 「いきものがかり」で検索し、一番上に出てきたアーティストを取得対象とする。
  artist = RSpotify::Artist.search('いきものがかり').first
  artist.genres # => ["anime", "j-pop", "j-poprock"]

  artist.albums.map(&:name)
    #=> ["WHO?",
    #    "WE DO",
    #    "超いきものばかり〜てんねん記念メンバーズBESTセレクション〜",
    #    "FUN! FUN! FANFARE!", ...

さて、今度は実際に楽曲情報から曲を探してみましょう。 私は今元気になれるようなJ-POPを聴きたいので、そのような条件で探してみたいと思います。

Spotify APIのドキュメントを探してみると、energy numberというパラメータがありました。詳細を読むと、0から1までの範囲を取る小数のパラメータで、よりエネルギッシュであるほど1に近い値になるようです。今回はこちらの値を使用して、おすすめ楽曲と、そのアーティストの一覧を取得してみます。


  # energy numberが高めのJ-POPに絞って検索しています。
  recommendations = RSpotify::Recommendations.generate(seed_genres: ['j-pop'], target_energy:0.8 )

  recommendations.tracks.map {|track| [track.artists.first.name, track.name].join('/')}
  #=> ["シェネル/アイム・ウィズ・ユー",
  #    "AAA/Dangerous Gamble",
  #    "Do As Infinity/生まれゆくものたちへ",
  #    "Superfly/愛をこめて花束を",
  #    "PUFFY/アジアの純真",
  #    …]

このように、Spotifyに掲載されている元気の出るJ-POPを取得することができました!

まとめ

今回は、APIを利用するための準備、そして実際に楽曲情報を取得するところまで完了しました。

しかし、せっかくSpotifyを利用しているのであれば、このまま取得した楽曲のプレイリストを作成したいですよね。その場合には、先述したように追加の設定を行う必要があります。次回は、追加の設定を行い、実際にプレイリストを作成するところまで行いたいと思います。

参考

Spotify API公式ページ

Spotify API公式リファレンス

RSpotifyのGithubページ

Pocket

CONTACT

お問い合わせ・ご依頼はこちらから