package com.cinla.ringtone; import java.net.URLEncoder; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONObject; public class MusicParser { private static final String CODING = "utf-8"; private static String getEntireUrl(String url, int startPos) { return url+"&start="+startPos; } //return null if there is some errors. private static ArrayList<MusicInfo> getMusicList(String url) { ArrayList<MusicInfo> musicList = new ArrayList<MusicInfo>(); try { String response = NetUtils.fetchHtmlPage(url, CODING, Constant.ONE_WEEK); Utils.D("response: "+response); JSONArray entries = new JSONArray(response); for (int i=0; i<entries.length(); i++) { JSONObject entry = entries.getJSONObject(i); MusicInfo musicInfo = new MusicInfo(); musicInfo.setmArtist(entry.getString(Constant.ARTIST)); musicInfo.setmCategory(entry.getString(Constant.CATEGORY)); musicInfo.setmDownloadCount(entry.getInt(Constant.DOWNLOAD_COUNT)); musicInfo.setmImageUrl(entry.getString(Constant.IMAGE)); musicInfo.setmMp3Url(entry.getString(Constant.S3URL)); musicInfo.setmRate(entry.getDouble(Constant.AVG_RATE)); musicInfo.setmSize(entry.getLong(Constant.SIZE)); musicInfo.setmTitle(entry.getString(Constant.TITLE)); musicInfo.setmUuid(entry.getString(Constant.UUID)); musicList.add(musicInfo); } } catch (Exception e) { Utils.D(e.getMessage()); return null; } return musicList; } //return null if there is some errors public static ArrayList<MusicInfo> getMusicListByQueryKey(String keyWord, int startPos) { String realUrl = Constant.BASE_URL + Constant.SEARCH_URL + URLEncoder.encode(keyWord); if (startPos != 0) { realUrl = getEntireUrl(realUrl, startPos); } Utils.D("real url: "+realUrl); return getMusicList(realUrl); } public static ArrayList<MusicInfo> getMusicListByCategory(String keyWord, int startPos) { String realUrl = Constant.BASE_URL + Constant.SEARCH_URL + URLEncoder.encode(keyWord) + "&type=" + Constant.CATEGORY; if (startPos != 0) { realUrl = getEntireUrl(realUrl, startPos); } Utils.D("real url: "+realUrl); return getMusicList(realUrl); } public static ArrayList<MusicInfo> getMusicListByArtist(String keyWord, int startPos) { String realUrl = Constant.BASE_URL + Constant.SEARCH_URL + URLEncoder.encode(keyWord) + "&type=" + Constant.ARTIST; if (startPos != 0) { realUrl = getEntireUrl(realUrl, startPos); } Utils.D("real url: "+realUrl); return getMusicList(realUrl); } public static ArrayList<MusicInfo> getMusicListByDownloadCount(int startPos) { String realUrl = Constant.BASE_URL + Constant.SEARCH_URL + "&type=" + Constant.DOWNLOAD_COUNT; if (startPos != 0) { realUrl = getEntireUrl(realUrl, startPos); } Utils.D("real url: "+realUrl); return getMusicList(realUrl); } public static ArrayList<MusicInfo> getMusicListByAddDate(int startPos) { String realUrl = Constant.BASE_URL + Constant.SEARCH_URL + "&type=" + Constant.ADD_DATE; if (startPos != 0) { realUrl = getEntireUrl(realUrl, startPos); } Utils.D("real url: "+realUrl); return getMusicList(realUrl); } }