Added Functions in .ino file to test the API functions, added comma seperated list to json, replaced link with url for consitency, Tested all functions -> All working

This commit is contained in:
Finian Landes
2023-12-05 22:02:43 +01:00
parent 9064bc796b
commit eafe0a3511
2 changed files with 115 additions and 32 deletions

View File

@@ -208,15 +208,15 @@ response Spotify::RestApiDelete(char rest_url[100], String payload){
}
//Player
response Spotify::currently_playing(){
char link[] = "https://api.spotify.com/v1/me/player/currently-playing";
return RestApiGet(link);
char url[] = "https://api.spotify.com/v1/me/player/currently-playing";
return RestApiGet(url);
}
response Spotify::current_playback_state(){
char link[] = "https://api.spotify.com/v1/me/player";
return RestApiGet(link);
char url[] = "https://api.spotify.com/v1/me/player";
return RestApiGet(url);
}
response Spotify::play_uri(String track_uri){
char link[] = "https://api.spotify.com/v1/me/player/play";
char url[] = "https://api.spotify.com/v1/me/player/play";
String payload;
if(track_uri.startsWith("spotify:track:")){
@@ -225,7 +225,7 @@ response Spotify::play_uri(String track_uri){
else{
payload = "{\"context_uri\":\"" + track_uri + "\",\"offset\":{\"position\":0}}";
}
return RestApiPut(link, payload);
return RestApiPut(url, payload);
}
response Spotify::start_playback(){
char url[] = "https://api.spotify.com/v1/me/player/play";
@@ -249,7 +249,7 @@ response Spotify::previous(){
}
response Spotify::available_devices(){
char url[] = "https://api.spotify.com/v1/me/player/previous";
char url[] = "https://api.spotify.com/v1/me/player/devices";
return RestApiGet(url);
}
@@ -320,12 +320,12 @@ response Spotify::add_to_queue(String context_uri){
response response_obj;
init_response(&response_obj);
String url = "https://api.spotify.com/v1/me/player/queue";
url += "?uri="+urlEncode(context_uri);
url += "?uri="+context_uri;
char url_char_array[100];
url.toCharArray(url_char_array, sizeof(url_char_array));
return RestApiPut(url_char_array);
return RestApiPost(url_char_array);
}
//Albums
response Spotify::get_album(String id){
@@ -364,20 +364,18 @@ response Spotify::get_users_saved_albums(int limit, int offset){
char url_char_array[100];
url.toCharArray(url_char_array, sizeof(url_char_array));
return RestApiPut(url_char_array);
return RestApiGet(url_char_array);
}
response Spotify::save_albums_for_current_user(String ids){
char url[] = "https://api.spotify.com/v1/me/albums";
String json = comma_separated_string_to_json(ids);
return RestApiPut(url, json);
return RestApiPut(url, ids);
}
response Spotify::remove_users_saved_albums(String ids){
char url[] = "https://api.spotify.com/v1/me/albums";
String json = comma_separated_string_to_json(ids);
return RestApiDelete(url, json);
return RestApiDelete(url, ids);
}
response Spotify::check_useres_saved_albums(String ids){
String url = "https://api.spotify.com/v1/me/albums/contains";
@@ -509,7 +507,21 @@ String Spotify::convert_id_to_uri(String id, String type){
String uri = "spotify:"+type+":"+id;
return uri;
}
String Spotify::comma_separated_string_to_json(String list){
//TODO
return list;
}
String Spotify::comma_separated_string_to_json(String list) {
DynamicJsonDocument doc(512);
String token;
int pos = 0;
while ((pos = list.indexOf(',')) != -1) {
token = list.substring(0, pos);
doc.add(token);
list.remove(0, pos + 1);
}
doc.add(list);
String list_doc;
serializeJson(doc, list_doc);
return list_doc;
}

View File

@@ -4,26 +4,22 @@
#include <base64.h>
#include "SpotifyESP32.h"
const char* ssid = "YOUR SSID";
const char* password = "YOUR WIFI PASSWORD";
char* client_id = "YOUR CLIENT ID";
char* client_secret = "YOUR CLIENT SECRET";
char* redirect_uri = "http://localhost:8080";//Set redirect uri on dev dashboard
char* refresh_token="YOUR CLIENT SECRET";
const char* ssid = "Rebweg10D";
const char* password = "Bitte_eintreten";
char* client_id = "fc0799459cf04f1aab6bb3f861964e77";
char* client_secret = "9ca64f76f7b54ecdaf3ae78585ff8b0f";
char* redirect_uri = "http://localhost:8080";
char* refresh_token="AQAichrGMfjjDHYWIAENJYyWoi_KpzLZ93_HSS30J8zULeuHRPmF9-Wh3aSEd5ju8tloWGDZ9GJodjRH51PRUPvTqPg855b3fdmQ8JifmdNAEfSapfhkihTKKXveJxie00o";
using namespace Spotify_types;
Spotify sp(refresh_token, redirect_uri, client_id, client_secret, false);//Set last Parameter to true to get more debug information
Spotify sp(refresh_token, redirect_uri, client_id, client_secret, true);
String song_id = "2NTCi4wGypj56t843jb3Mt";
String album_id = "7iLuHJkrb9KHPkMgddYigh";
String album_ids = "7iLuHJkrb9KHPkMgddYigh,4KAtLRVIfB0bKnRY01dveY,2SxoeF005n621Jca66RRdu";
void setup() {
Serial.begin(9600);
connectToWifi();
Serial.print("Current Track: ");
Serial.print(sp.current_track_name());
Serial.print(" by ");
Serial.println(sp.current_artist_names());
Serial.println(sp.convert_id_to_uri(sp.current_track_id(),TYPE_TRACK));
print_response(sp.shuffle(SHUFFLE_ON));
}
@@ -40,4 +36,79 @@ void connectToWifi(){
}
Serial.println();
Serial.println("Connected to WiFi");
}
void test_player(){
Serial.print("Currently Playing: ");
print_response(sp.currently_playing());
Serial.print("Play track: ");
print_response(sp.play_uri(sp.convert_id_to_uri(song_id,TYPE_TRACK)));
Serial.print("Pause: ");
print_response(sp.pause_playback());
Serial.print("Play: ");
print_response(sp.start_playback());
Serial.print("Skip: ");
print_response(sp.skip());
Serial.print("Previous: ");
print_response(sp.previous());
Serial.print("Available Devices: ");
print_response(sp.available_devices());
Serial.print("Playback state: ");
print_response(sp.current_playback_state());
Serial.print("Recently played: ");
print_response(sp.recently_played_tracks(1));
Serial.print("Seek to pos: ");
print_response(sp.seek_to_position(500));
Serial.print("Add to queue: ");
print_response(sp.add_to_queue(sp.convert_id_to_uri(song_id,TYPE_TRACK)));
Serial.print("Get Queue: ");
print_response(sp.get_queue());
Serial.print("Repeat: ");
print_response(sp.repeat_mode(REPEAT_CONTEXT));
Serial.print("Shuffle off: ");
print_response(sp.shuffle(SHUFFLE_OFF));
Serial.print("Transfer Playback: ");
print_response(sp.transfer_playback(sp.current_device_id()));
Serial.print("Set Volume: ");
print_response(sp.set_volume(50));
}
void test_albums(){
Serial.print("Get Album: ");
print_response(sp.get_album(album_id));
Serial.print("Get Albums: ");
print_response(sp.get_albums(album_ids));
Serial.print("Get Album Tracks: ");
print_response(sp.get_album_tracks(album_id, 1, 0));
Serial.print("Get Saved Albums: ");
print_response(sp.get_users_saved_albums(1, 0));
Serial.print("Remove Saved Albums: ");
print_response(sp.remove_users_saved_albums(sp.comma_separated_string_to_json(album_ids)));
Serial.print("Save Albums: ");
print_response(sp.save_albums_for_current_user(sp.comma_separated_string_to_json(album_ids)));
Serial.print("Check if Album Saved: ");
print_response(sp.check_useres_saved_albums(album_ids));
Serial.print("Get Releases: ");
print_response(sp.get_new_releases("CH", 1, 0));
}