package com.qtfreet.musicuu.musicApi.MusicService; import com.alibaba.fastjson.JSON; import com.qtfreet.musicuu.musicApi.MusicBean.tt.TiantianDatas; import com.qtfreet.musicuu.musicApi.MusicBean.tt.TiantianLrc; import java.util.ArrayList; import java.util.List; /** * Created by qtfreet on 2017/2/6. */ public class TtMusic implements IMusic { //天天支持无损和mv解析 private static List<SongResult> search(String key, int page, int size) throws Exception { String url = "http://search.dongting.com/song/search?page=" + page + "&user_id=0&tid=0&app=ttpod&size=" + size + "&q=" + key + "&active=0"; String s = NetUtil.GetHtmlContent(url); TiantianDatas ttDatas = JSON.parseObject(s, TiantianDatas.class); if (ttDatas == null) { return null;//搜索歌曲失败 } if (ttDatas.getTotalCount() == 0) { return null;//没有搜到歌曲 } int totalsize = ttDatas.getTotalCount(); return GetListByJson(ttDatas.getData()); } //解析搜索时获取到的json,然后拼接成固定格式 private static List<SongResult> GetListByJson(List<TiantianDatas.DataBean> songs) throws Exception { List<SongResult> list = new ArrayList<>(); int len = songs.size(); if (len <= 0) { return null; } for (TiantianDatas.DataBean song : songs) { SongResult songResult = new SongResult(); TiantianDatas.DataBean songsBean = song; List<TiantianDatas.DataBean.UrlListBean> links = songsBean.getUrlList(); if (JSON.toJSONString(links).equals("[]") || links == null || links.size() == 0) { continue; } String SongId = String.valueOf(songsBean.getSongId()); String SongName = songsBean.getName(); String Songlink = "http://h.dongting.com/yule/app/music_player_page.html?id=" + String.valueOf(songsBean.getSongId()); String ArtistId = String.valueOf(songsBean.getSingerId()); String AlbumId = String.valueOf(songsBean.getAlbumId()); String AlbumName = songsBean.getAlbumName(); String artistName = songsBean.getSingerName(); songResult.setArtistName(artistName); songResult.setArtistId(ArtistId); songResult.setSongId(SongId); songResult.setSongName(SongName); songResult.setSongLink(Songlink); songResult.setAlbumId(AlbumId); songResult.setAlbumName(AlbumName); int mvs = songsBean.getMvList().size(); if (songsBean.getMvList() != null && mvs > 0) { int max = 0; int j = 0; while (j < mvs) { TiantianDatas.DataBean.MvListBean mvListBean = songsBean.getMvList().get(j); int videoId = mvListBean.getVideoId(); songResult.setMvId(String.valueOf(videoId)); if (max == 0) { songResult.setMvHdUrl(mvListBean.getUrl()); songResult.setMvLdUrl(mvListBean.getUrl()); max = mvListBean.getBitRate(); } else { if (mvListBean.getBitRate() > max) { songResult.setMvHdUrl(mvListBean.getUrl()); } else { songResult.setMvLdUrl(mvListBean.getUrl()); } } j++; } } int urlsize = links.size(); for (TiantianDatas.DataBean.UrlListBean link : links) { songResult.setLength(Util.secTotime(link.getDuration() / 1000)); switch (link.getBitRate()) { case 128: songResult.setLqUrl(link.getUrl()); songResult.setBitRate("128K"); break; case 192: songResult.setHqUrl(link.getUrl()); songResult.setBitRate("192K"); break; case 320: if (songResult.getHqUrl().isEmpty()) { songResult.setHqUrl(link.getUrl()); } songResult.setSqUrl(link.getUrl()); songResult.setBitRate("320K"); break; } } if (songsBean.getLlList() != null && songsBean.getLlList().size() != 0) { songResult.setBitRate("无损"); int size = songsBean.getLlList().size(); for (int k = 0; k < size; k++) { TiantianDatas.DataBean.LlListBean llListBean = songsBean.getLlList().get(k); if (llListBean.getSuffix().equals("flac")) { songResult.setFlacUrl(llListBean.getUrl()); } else if (llListBean.getSuffix().equals("ape")) { //songResult.setFlacUrl(llListBean.getUrl()); } else if (llListBean.getSuffix().equals("wav")) { // /songResult.setFlacUrl(llListBean.getUrl()); } else { songResult.setFlacUrl(llListBean.getUrl()); } } } songResult.setType("tt"); songResult.setPicUrl(songsBean.getPicUrl()); // songResult.setLrcUrl(GetLrcUrl(SongId, SongName, artistName)); //暂不去拿歌曲,直接解析浪费性能 list.add(songResult); } return list; } private static String GetLrcUrl(String songId, String songName, String ArtistName) { try { // SearchSong(songId); String s = NetUtil.GetHtmlContent("http://lp.music.ttpod.com/lrc/down?artist=" + Util.UrlEncode(ArtistName) + "&title=" + Util.UrlEncode(songName) + "&song_id=" + songId); TiantianLrc kugouLrc = JSON.parseObject(s, TiantianLrc.class); return kugouLrc.getData().getLrc(); } catch (Exception e) { return ""; } } @Override public List<SongResult> SongSearch(String key, int page, int size) { try { return search(key, page, size); } catch (Exception e) { return null; } } }