dreeeeeedd
@dreeeeeedd

Как работать с Spotify API через Ruby ( RestClient, Watir...)?

Привет ,
мне нужно через руби подключится и взять токен от спотифи (Что я сделал ) ,
но токен который мне присылают низкоуровневый (из Flow'a client_credentials) , а при смене Flow'a мне выдаёт BAD REQUEST.

Запрос токена:
grant = Base64.encode64("#{CLIENT_ID}:#{CLIENT_SECRET}").delete("\n")

respond = RestClient.post('https://accounts.spotify.com/api/token',
                       {'grant_type' => 'client_credentials'},
                       {"Authorization" => "Basic #{grant}"})

token_ext =  respond.split(',')
token_ext2 = token_ext[0].split(':')
only_token = token_ext2[1].delete_prefix('"').delete_suffix('"')
puts 'ACCES TOKEN: %s' % [only_token]


Но проблема с токеном это не все , моя главная задача это работа с плейлистом.
Во первых мне надо добавить новый плэйлист , я пробывал это сделать но до этого я не работал с HTTP Request-ами в таком формате.

Мои попытки добавления плейлиста(код ниже не работает):
# respond = RestClient.post('https://api.spotify.com/v1/users/%s/playlists' % [USER_ID],
#                           {"Content-Type" => "application/json"},
#                           {"Authorization" => "Basic #{grant}"})
# respond = RestClient.post('https://api.spotify.com/v1/users/%s/playlists' % [USER_ID],
#
#                           {"Content-Type" => "application/json"},
#                           {"Authorization" => "Basic #{grant}"},
#                           ) { "name" => "New Playlilist" ; "description" => "sdada" ; "public" => "false"}


И так в конце хотел бы вернутся к токену , так как в конце я уже устал искать на руби гайды по работе с спотифи по этому я нашел gem "spotify-client". Забросил токен в конфиг и попытался сделать новый плейлист.

config = {
  :access_token => only_token.to_s,  # initialize the client with an access token to perform authenticated calls
  :raise_errors => true,  # choose between returning false or raising a proper exception when API calls fails

  # Connection properties
  :retries       => 1,    # automatically retry a certain number of times before returning
  :read_timeout  => 10,   # set longer read_timeout, default is 10 seconds
  :write_timeout => 10,   # set longer write_timeout, default is 10 seconds
  :persistent    => false # when true, make multiple requests calls using a single persistent connection. Use +close_connection+ method on the client to manually clean up sockets
}
client = Spotify::Client.new(config)
sleep(2)
puts client.create_user_playlist(USER_ID, "ALOHA", is_public = true)


В результате мне выдало ошибку что у меня недостаточно прав , то есть мой токен не даёт мне такие права.

Ну и сам вопрос в конце концов. Как мне взять нужный токен(нужный токен из Flow'a authorization_code) от спотифи через запрос используя Watir или RestClient ? А так-же как мне добавить новый плэйлист и делать такие манипуляции как добавления трека в плейлист , смена последнего трека с первым в плейлисте и вытаскивание данных о песни ?

Спасибо
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы