public static Map<String, Object> getWikiTextFromXml(XmlTag wikiTag) { if (wikiTag == null) { return null; } Date published = parseLastfmDateLong(wikiTag.getChildByNameValue("published")); String summary = wikiTag.getChildByNameValue("summary"); if (summary != null) summary = summary.replace("\n", "<br/>"); String content = wikiTag.getChildByNameValue("content"); if (content != null) content = content.replace("\n", "<br/>"); Map<String, Object> wiki = new HashMap<String, Object>(); wiki.put("published", published); wiki.put("summary", summary); wiki.put("content", content); return wiki; }
public static Track getTrackFromXml(XmlTag trackTag) { if (trackTag == null) { return null; } String id = trackTag.getChildByNameValue("id"); String name = trackTag.getChildByNameValue("name"); if (name != null) name = Html.fromHtml(name).toString(); String mbid = trackTag.getChildByNameValue("mbid"); String url = trackTag.getChildByNameValue("url"); boolean streamable = "1".equals(trackTag.getChildByNameValue("streamable")) ? true : false; int trackNumber = 0; int duration = 0; int listeners = 0; int playcount = 0; try { trackNumber = Integer.parseInt(trackTag.getAttribute("rank")); duration = Integer.parseInt(trackTag.getChildByNameValue("duration")); listeners = Integer.parseInt(trackTag.getChildByNameValue("listeners")); playcount = Integer.parseInt(trackTag.getChildByNameValue("playcount")); } catch (NumberFormatException e) { } catch (NullPointerException e) { } Artist artist = getSimilarArtistFromXml(trackTag.getChildByName("artist")); Album album = getAlbumFromXml(trackTag.getChildByName("album")); List<Tag> tags = getTagsFromXml(trackTag.getChildByName("toptags")); Map<String, Object> wiki = getWikiTextFromXml(trackTag.getChildByName("wiki")); Date published = null; String summary = null; String content = null; if (wiki != null) { published = (Date) wiki.get("published"); summary = (String) wiki.get("summary"); content = (String) wiki.get("content"); } Track track = new Track(name, url); track.setId(id); track.setMbid(mbid); track.setStreamable(streamable); track.setTrackNumber(trackNumber); track.setDuration(duration); track.setListeners(listeners); track.setPlaycount(playcount); track.setArtist(artist); track.setAlbum(album); track.setTags(tags); track.setPublished(published); track.setSummary(summary); track.setContent(content); return track; }
public static Artist getSimilarArtistFromXml(XmlTag artistTag) { String similarName = artistTag.getChildByNameValue("name"); if (similarName != null) similarName = Html.fromHtml(similarName).toString(); String mbid = artistTag.getChildByNameValue("mbid"); // this is not always present String similarUrl = artistTag.getChildByNameValue("url"); // String similarImageSmall = artistTag.getChildByNameAndAttributeValue("image", "size", // "small"); // String similarImageMedium = artistTag.getChildByNameAndAttributeValue("image", "size", // "medium"); // String similarImageLarge = artistTag.getChildByNameAndAttributeValue("image", "size", // "large"); // String similarImageXLarge = artistTag.getChildByNameAndAttributeValue("image", "size", // "extralarge"); // String similarImageMega = artistTag.getChildByNameAndAttributeValue("image", "size", // "mega"); Artist similarArtist = new Artist(similarName, similarUrl, mbid); setImagesToAbstractInfoWithImages(similarArtist, artistTag); return similarArtist; }
public static Tag getTagFromXml(XmlTag singleTag) { if (singleTag == null) { return null; } String tagName = singleTag.getChildByNameValue("name"); if (tagName != null) Html.fromHtml(tagName).toString(); String tagUrl = singleTag.getChildByNameValue("url"); int reach = 0; int taggings = 0; try { reach = Integer.parseInt(singleTag.getChildByNameValue("reach")); taggings = Integer.parseInt(singleTag.getChildByNameValue("taggings")); } catch (NumberFormatException e) { // do nothing } catch (NullPointerException e) { // do nothing } boolean streamable = "1".equals(singleTag.getChildByName("streamable")) ? true : false; XmlTag wikiTag = singleTag.getChildByName("wiki"); Map<String, Object> wikiMap = getWikiTextFromXml(wikiTag); Date published = null; String summary = null; String content = null; if (wikiMap != null) { published = (Date) wikiMap.get("published"); summary = (String) wikiMap.get("summary"); content = (String) wikiMap.get("content"); } Tag tag = new Tag(tagName, tagUrl, reach, taggings, streamable, published, summary, content); return tag; }
public static ArtistDetailed getArtistInfoFromXml(XmlTag artistTag) { if (artistTag == null) { return null; } String name = artistTag.getChildByNameValue("name"); if (name != null) name = Html.fromHtml(name).toString(); String mbid = artistTag.getChildByNameValue("mbid"); String url = artistTag.getChildByNameValue("url"); // String imageSmall = artistTag.getChildByNameAndAttributeValue("image", "size", "small"); // String imageMedium = artistTag.getChildByNameAndAttributeValue("image", "size", "medium"); // String imageLarge = artistTag.getChildByNameAndAttributeValue("image", "size", "large"); // String imageXLarge = artistTag.getChildByNameAndAttributeValue("image", "size", // "extralarge"); // String imageMega = artistTag.getChildByNameAndAttributeValue("image", "size", "mega"); boolean streamable = "1".equals(artistTag.getChildByNameValue("streamable")) ? true : false; int listeners = 0; int plays = 0; try { listeners = Integer.parseInt(artistTag.getChildByNameValue("listeners")); plays = Integer.parseInt(artistTag.getChildByNameValue("plays")); } catch (NumberFormatException e) { // Log.e(TAG, e.toString()); } catch (NullPointerException e) { // do nothing } /** SIMILAR ARTISTS */ XmlTag similarTag = artistTag.getChildByName("similar"); List<Artist> similarArtists = getSimilarArtistsFromXml(similarTag); /** TAGS */ XmlTag tagsTag = artistTag.getChildByName("tags"); List<Tag> tags = new ArrayList<Tag>(); if (tagsTag != null) { XmlTag singleTag = tagsTag.getChildByNameAvoidDuplicates("tag"); while (singleTag != null) { Tag tag = getTagFromXml(singleTag); tags.add(tag); /** for next iteration * */ singleTag = tagsTag.getChildByNameAvoidDuplicates("tag"); } } XmlTag bioTag = artistTag.getChildByName("bio"); Map<String, Object> bioMap = getWikiTextFromXml(bioTag); ArtistDetailed artistDetail = new ArtistDetailed(name, mbid, url, streamable, listeners, plays, similarArtists, tags); setImagesToAbstractInfoWithImages(artistDetail, artistTag); setWikiInfoToAbstractInfo(artistDetail, bioMap); // artistDetail.setImages(imageSmall, imageMedium, imageLarge, imageXLarge, imageMega); return artistDetail; }
public static Album getAlbumFromXml(XmlTag albumTag) { if (albumTag == null) { return null; } String title = albumTag.getChildByNameValue("name"); if (title == null) title = albumTag.getChildByNameValue("title"); Album album = new Album(title, albumTag.getChildByNameValue("url")); album.setArtist(albumTag.getChildByNameValue("artist")); album.setId(albumTag.getChildByNameValue("id")); album.setMbid(albumTag.getChildByNameValue("mbid")); album.setUrl(albumTag.getChildByNameValue("url")); album.setReleaseDate(parseLastfmDateAlbum(albumTag.getChildByNameValue("releasedate"))); setImagesToAbstractInfoWithImages(album, albumTag); int listeners = 0; int playcount = 0; try { listeners = Integer.parseInt(albumTag.getChildByNameValue("listeners")); playcount = Integer.parseInt(albumTag.getChildByNameValue("playcount")); } catch (NumberFormatException e) { } catch (NullPointerException e) { } album.setListeners(listeners); album.setPlaycount(playcount); album.setTracks(getTracksFromXml(albumTag.getChildByName("tracks"))); album.setTags(getTagsFromXml(albumTag.getChildByName("toptags"))); Map<String, Object> wikiMap = getWikiTextFromXml(albumTag.getChildByName("wiki")); setWikiInfoToAbstractInfo(album, wikiMap); return album; }
/** * Create a Playlist object with tracks by parsing the xml. * * @param xml * @return Playlist with tracks from xml or null if xml is null. */ public static Playlist getPlaylistFromXml(XmlTag playlistTag) { if (playlistTag == null) { return null; } String playlistTitle = playlistTag.getChildByNameValue("title"); String playlistCreator = playlistTag.getChildByNameValue("creator"); Date playlistDate = parseLastfmDate(playlistTag.getChildByNameValue("date")); int playlistExpiry = 0; try { playlistExpiry = Integer.parseInt(playlistTag.getChildByNameValue("link")); } catch (NumberFormatException e) { e.printStackTrace(); } Playlist radioPlaylist = new Playlist(playlistTitle, playlistCreator, playlistDate, playlistExpiry); XmlTag tracks = playlistTag.getChildByName("trackList"); XmlTag trackTag = tracks.getChildByNameAvoidDuplicates("track"); while (trackTag != null) { String location = trackTag.getChildByNameValue("location"); String title = trackTag.getChildByNameValue("title"); String identifier = trackTag.getChildByNameValue("identifier"); String album = trackTag.getChildByNameValue("album"); String creator = trackTag.getChildByNameValue("creator"); if (title != null) title = Html.fromHtml(title).toString(); if (album != null) album = Html.fromHtml(album).toString(); if (creator != null) creator = Html.fromHtml(creator).toString(); int duration = 0; try { duration = Integer.parseInt(trackTag.getChildByNameValue("duration")); } catch (NumberFormatException e) { e.printStackTrace(); } String image = trackTag.getChildByNameValue("image"); RadioTrack track = new RadioTrack(location, title, identifier, album, creator, duration, image); radioPlaylist.addTrack(track); /** for next iteration * */ trackTag = tracks.getChildByNameAvoidDuplicates("track"); } return radioPlaylist; }