Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

少ないRubyコードでSpotifyから楽曲情報を得る #10

Open
OTA88 opened this issue Sep 10, 2019 · 2 comments
Open

少ないRubyコードでSpotifyから楽曲情報を得る #10

OTA88 opened this issue Sep 10, 2019 · 2 comments

Comments

@OTA88
Copy link

OTA88 commented Sep 10, 2019

music_conciergeのSpotify API部分を理解するための架け橋として。

本当はアプリ本体に貢献したかったのですが、時間切れの中で苦肉のアウトプットです。。

@OTA88
Copy link
Author

OTA88 commented Sep 10, 2019

require 'net/http'
require 'uri'
require 'json'

BASE64_ENCODED_SPOTIFY_CLIENT_ID_AND_CLIENT_SECRET = "XXXXXXXXXXXXXX"

# access_tokenを取得する
uri = URI.parse("https://accounts.spotify.com/api/token")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Basic #{BASE64_ENCODED_SPOTIFY_CLIENT_ID_AND_CLIENT_SECRET}"
request.set_form_data(
  "grant_type" => "client_credentials",
)

req_options = {
  use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

result = JSON.parse(response.body)

# 取得したaccess_tokenを使って、punk-rockジャンルから選曲する
uri = URI.parse("https://api.spotify.com/v1/recommendations?limit=1&market=JP&seed_genres=punk-rock")

request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{result["access_token"]}"

req_options = {
  use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

p result2 = JSON.parse(response.body)

@OTA88
Copy link
Author

OTA88 commented Sep 10, 2019

ライブラリは全てRuby標準添付なので、全文コピペしてRubyファイルとして保存。当該ファイルをターミナル上で実行すると楽曲の情報がゲットできると思います。

BASE64_ENCODED_SPOTIFY_CLIENT_ID_AND_CLIENT_SECRET = "XXXXXXXXXXXXXX"
XXXXXXXXXXXXXXの入手方法は秋本さんが作成されたREADMEを参照
https://github.com/daimyo-college/music_concierge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant