api - Spotify Java Application Issue -
trying create java application uses spotify web api artists, tracks, etc.
having trouble getting come through, believe problem in class , appreciate i'm struggling! thanks
public class spotifyaccess extends java.lang.object { private controller controller; public spotifyaccess() throws ioexception { controller = new controller("spotify", "http://ws.spotify.com/", ""); controller.setretries(1); controller.settimeout(10000); controller.settracesends(false); } /** * searrch artist name * @param query name of artist * @return list of artists * @throws ioexception */ public results<artistitem> searchartist(string query) throws ioexception { return searchartist(query, 1); } /** * search artist name * @param query name of artist * @param page page number * @return list of artists * @throws ioexception */ public results<artistitem> searchartist(string query, int page) throws ioexception { string encodedartist = urlencoder.encode(query, "utf-8"); document doc = controller.sendcontroller("search/1/artist?page=" + page + "&q=" + encodedartist); element docelement = doc.getdocumentelement(); nodelist artists = docelement.getelementsbytagname("artist"); int totalresults = xmlutil.getdescendenttextasint(docelement, "opensearch:totalresults", -1); int startindex = xmlutil.getdescendenttextasint(docelement, "opensearch:startindex", -1); int itemsperpage = xmlutil.getdescendenttextasint(docelement, "opensearch:itemsperpage", -1); list<artistitem> artistlist = new arraylist<artistitem>(); (int = 0; < artists.getlength(); i++) { element artistnode = (element) artists.item(i); string id = artistnode.getattribute("href"); string name = xmlutil.getdescendenttext(artistnode, "name"); float popularity = xmlutil.getdescendenttextasfloat(artistnode, "popularity", spotifyitem.unknown_popularity); artistitem artist = new artistitem(id, name, popularity); artistlist.add(artist); } results results = new results(startindex, totalresults, itemsperpage, artistlist); return results; } /** * search albums * @param query album name * @return results of search * @throws ioexception */ public results<albumitem> searchalbum(string query) throws ioexception { return searchalbum(query, 1); } private albumitem parsealbum(element albumnode) throws ioexception { string id = albumnode.getattribute("href"); string name = xmlutil.getdescendenttext(albumnode, "name"); float popularity = xmlutil.getdescendenttextasfloat(albumnode, "popularity", spotifyitem.unknown_popularity); albumitem album = new albumitem(id, name, popularity); element artistnode = (element) xmlutil.getdescendent(albumnode, "artist"); if (artistnode != null) { string artistid = artistnode.getattribute("href"); string artistname = xmlutil.getdescendenttext(artistnode, "name"); album.setartistid(artistid); album.setartistname(artistname); } element availability = (element) xmlutil.getdescendent(albumnode, "availability"); string territories = xmlutil.getdescendenttext(availability, "territories"); string[] tfields = territories.split("\\s+"); int released = xmlutil.getdescendenttextasint(albumnode, "released", -1); nodelist idnodes = albumnode.getelementsbytagname("id"); (int j = 0; j < idnodes.getlength(); j++) { element idnode = (element) idnodes.item(j); string idtype = idnode.getattribute("type"); string idval = idnode.gettextcontent(); album.addid(idtype, idval); } album.setavailableterritories(tfields); album.setreleased(released); return album; } /** * search album * @param query query * @param page page of results * @return * @throws ioexception */ public results<albumitem> searchalbum(string query, int page) throws ioexception { string encodedalbum = urlencoder.encode(query, "utf-8"); document doc = controller.sendcontroller("search/1/album?page=" + page + "&q=" + encodedalbum); element docelement = doc.getdocumentelement(); nodelist albums = docelement.getelementsbytagname("album"); int totalresults = xmlutil.getdescendenttextasint(docelement, "opensearch:totalresults", -1); int startindex = xmlutil.getdescendenttextasint(docelement, "opensearch:startindex", -1); int itemsperpage = xmlutil.getdescendenttextasint(docelement, "opensearch:itemsperpage", -1); list<albumitem> albumlist = new arraylist<albumitem>(); (int = 0; < albums.getlength(); i++) { element albumnode = (element) albums.item(i); albumitem album = parsealbum(albumnode); albumlist.add(album); } results results = new results(startindex, totalresults, itemsperpage, albumlist); return results; } /** * search tracks * @param artist name of artist * @param track name of track * @return results of search * @throws ioexception */ public results<trackitem> searchtrack(string artist, string track) throws ioexception { string query = "artist:\"" + artist + "\" track:\"" + track + "\""; return searchtrack(query, 1); } /** * search tracks * @param artist name of artist * @param track name of track * @param page page number * @return results of search * @throws ioexception */ public results<trackitem> searchtrack(string artist, string track, int page) throws ioexception { string query = "artist:\"" + artist + "\" track:\"" + track + "\""; return searchtrack(query, page); } /** * search tracks * @param artist artist * @param album album * @param track track * @return results of search * @throws ioexception */ public results<trackitem> searchtrack(string artist, string album, string track) throws ioexception { string query = "artist:\"" + artist + "\" album:\"" + album + "\" track:\"" + track + "\""; return searchtrack(query, 1); } /** * search tracks * @param query searc query * @return results of search * @throws ioexception */ public results<trackitem> searchtrack(string query) throws ioexception { return searchtrack(query, 1); } /** * search tracks * @param query search query * @param page page number * @return search results * @throws ioexception */ public results<trackitem> searchtrack(string query, int page) throws ioexception { string encodedtrack = urlencoder.encode(query, "utf-8"); document doc = controller.sendcontroller("search/1/track?page=" + page + "&q=" + encodedtrack); element docelement = doc.getdocumentelement(); nodelist tracks = docelement.getelementsbytagname("track"); int totalresults = xmlutil.getdescendenttextasint(docelement, "opensearch:totalresults", -1); int startindex = xmlutil.getdescendenttextasint(docelement, "opensearch:startindex", -1); int itemsperpage = xmlutil.getdescendenttextasint(docelement, "opensearch:itemsperpage", -1); list<trackitem> tracklist = new arraylist<trackitem>(); (int = 0; < tracks.getlength(); i++) { element tracknode = (element) tracks.item(i); string trackid = tracknode.getattribute("href"); string trackname = xmlutil.getdescendenttext(tracknode, "name"); float trackpopularity = xmlutil.getdescendenttextasfloat(tracknode, "popularity", spotifyitem.unknown_popularity); element artistnode = (element) xmlutil.getdescendent(tracknode, "artist"); string artistid = artistnode.getattribute("href"); string artistname = xmlutil.getdescendenttext(artistnode, "name"); element albumnode = (element) xmlutil.getdescendent(tracknode, "album"); albumitem album = parsealbum(albumnode); album.setartistid(artistid); album.setartistname(artistname); int tracknumber = xmlutil.getdescendenttextasint(tracknode, "track-number", -1); float tracklength = xmlutil.getdescendenttextasfloat(tracknode, "length", -1); trackitem track = new trackitem(trackid, trackname, trackpopularity); track.setalbum(album); track.setartistid(artistid); track.setartistname(artistname); track.settracknumber(tracknumber); track.setlength(tracklength); nodelist idnodes = tracknode.getelementsbytagname("id"); (int j = 0; j < idnodes.getlength(); j++) { element idnode = (element) idnodes.item(j); string idtype = idnode.getattribute("type"); string idval = idnode.gettextcontent(); track.addid(idtype, idval); } tracklist.add(track); } results results = new results(startindex, totalresults, itemsperpage, tracklist); return results; } public static void test() throws ioexception { spotifyaccess spotify = new spotifyaccess(); system.out.println(spotify.searchartist("weezer")); system.out.println(spotify.searchtrack("my name jonas")); system.out.println(spotify.searchtrack("miley cyrus", "goodbye")); system.out.println(spotify.searchtrack("the nice", "america")); system.out.println(spotify.searchtrack("the nice", "elegy", "america")); // print out of tracks weezer results<trackitem> results = null; int page = 1; int count = 1; { results = spotify.searchtrack("artist:weezer", page); page = results.getnextpage(); (trackitem track : results.getitems()) { system.out.printf("%d %s\n", count++, track.getname()); } } while (!results.islast()); } private static string concat(string[] args) { stringbuilder sb = new stringbuilder(); (string s : args) { sb.append(s); sb.append(" "); } return sb.tostring().trim(); } public static void main(string[] args) throws ioexception { if (args.length == 0) { system.out.println("usage: spotify artist name"); } else { string artist = concat(args); spotifyaccess spotify = new spotifyaccess(); results<trackitem> results = null; int page = 1; { artist = "weezer"; results = spotify.searchtrack("artist:" + artist, page); page = results.getnextpage(); (trackitem track : results.getitems()) { system.out.printf("%.2f %s // %s // %s\n", track.getpopularity(), track.getartistname(), track.getalbum().getname(), track.getname()); } } while (!results.islast()); } } }
Comments
Post a Comment