From 951d6206f2837d5985899c5b974690e0076b68c5 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Wed, 2 May 2012 17:21:46 +0200 Subject: piano: Audio format support Ask Pandora for audio format requested by user. Closes #244. --- src/libpiano/piano.c | 25 ------------------------- src/libpiano/request.c | 26 ++++++++++++++++++++++++++ src/libpiano/response.c | 5 +++-- 3 files changed, 29 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/libpiano/piano.c b/src/libpiano/piano.c index bd8847b..9f4d7ec 100644 --- a/src/libpiano/piano.c +++ b/src/libpiano/piano.c @@ -206,31 +206,6 @@ void PianoDestroyRequest (PianoRequest_t *req) { memset (req, 0, sizeof (*req)); } -/* convert audio format id to string that can be used in xml requests - * @param format id - * @return constant string - */ -static const char *PianoAudioFormatToString (PianoAudioFormat_t format) { - switch (format) { - case PIANO_AF_AACPLUS: - return "aacplus"; - break; - - case PIANO_AF_MP3: - return "mp3"; - break; - - case PIANO_AF_MP3_HI: - return "mp3-hifi"; - break; - - default: - return NULL; - break; - } -} - - /* get station from list by id * @param search here * @param search for this diff --git a/src/libpiano/request.c b/src/libpiano/request.c index 3a1d7fb..fcc13d4 100644 --- a/src/libpiano/request.c +++ b/src/libpiano/request.c @@ -36,6 +36,30 @@ THE SOFTWARE. #include "piano.h" #include "crypt.h" +/* convert audio format id to string + * @param format id + * @return constant string + */ +static const char *PianoAudioFormatToString (PianoAudioFormat_t format) { + switch (format) { + case PIANO_AF_AACPLUS: + return "HTTP_64_AACPLUS"; + break; + + case PIANO_AF_MP3: + return "HTTP_128_MP3"; + break; + + case PIANO_AF_MP3_HI: + return "HTTP_192_MP3"; + break; + + default: + return NULL; + break; + } +} + /* prepare piano request (initializes request type, urlpath and postData) * @param piano handle * @param request structure @@ -133,6 +157,8 @@ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, json_object_object_add (j, "stationToken", json_object_new_string (reqData->station->id)); + json_object_object_add (j, "additionalAudioUrl", + json_object_new_string (PianoAudioFormatToString (reqData->format))); method = "station.getPlaylist"; break; diff --git a/src/libpiano/response.c b/src/libpiano/response.c index 4b33248..16b17a3 100644 --- a/src/libpiano/response.c +++ b/src/libpiano/response.c @@ -209,7 +209,8 @@ PianoReturn_t PianoResponse (PianoHandle_t *ph, PianoRequest_t *req) { free (song); continue; } - song->audioUrl = strdup (json_object_get_string (json_object_object_get (json_object_object_get (json_object_object_get (s, "audioUrlMap"), "highQuality"), "audioUrl"))); + + song->audioUrl = PianoJsonStrdup (s, "additionalAudioUrl"); song->artist = PianoJsonStrdup (s, "artistName"); song->album = PianoJsonStrdup (s, "albumName"); song->title = PianoJsonStrdup (s, "songName"); @@ -217,7 +218,7 @@ PianoReturn_t PianoResponse (PianoHandle_t *ph, PianoRequest_t *req) { song->stationId = PianoJsonStrdup (s, "stationId"); song->fileGain = json_object_get_double ( json_object_object_get (s, "trackGain")); - song->audioFormat = PIANO_AF_AACPLUS; + song->audioFormat = reqData->format; switch (json_object_get_int (json_object_object_get (s, "songRating"))) { case 1: -- cgit v1.2.3