diff --git a/SpotifyESP32.cpp b/SpotifyESP32.cpp index 4632fef..4c741d3 100644 --- a/SpotifyESP32.cpp +++ b/SpotifyESP32.cpp @@ -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; -} \ No newline at end of file + +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; +} diff --git a/Spotify_Esp32_test.ino b/Spotify_Esp32_test.ino index d6a1008..3057af7 100644 --- a/Spotify_Esp32_test.ino +++ b/Spotify_Esp32_test.ino @@ -4,26 +4,22 @@ #include #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)); } \ No newline at end of file