From c3e9b30846cd38461cb14f934894b1d7955f7db4 Mon Sep 17 00:00:00 2001 From: zhangmeng <1334717033@qq.com> Date: Sun, 23 Apr 2023 15:50:49 +0800 Subject: [PATCH] =?UTF-8?q?2023=E5=B9=B44=E6=9C=8823=E6=97=A515:45:58=20?= =?UTF-8?q?=E9=9F=B3=E4=B9=90=E6=90=9C=E6=89=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../controller/MusicDownloadController.java | 239 ++++-- .../zhangmeng/tools/music/migu/MiGuMusic.java | 770 ++++++++++++++++++ .../tools/music/migu/SwitchType.java | 44 + .../tools/music/qianqian/QianQianMusic.java | 729 +++++++++++++++++ .../com/zhangmeng/tools/utils/JksUtils.java | 188 +++++ src/main/resources/fxml/music-download.fxml | 58 +- src/main/resources/static/js/migu.js | 260 +++--- 8 files changed, 2053 insertions(+), 240 deletions(-) create mode 100644 src/main/java/com/zhangmeng/tools/music/migu/MiGuMusic.java create mode 100644 src/main/java/com/zhangmeng/tools/music/migu/SwitchType.java create mode 100644 src/main/java/com/zhangmeng/tools/music/qianqian/QianQianMusic.java create mode 100644 src/main/java/com/zhangmeng/tools/utils/JksUtils.java diff --git a/pom.xml b/pom.xml index 601b2ae..fed2072 100644 --- a/pom.xml +++ b/pom.xml @@ -394,6 +394,11 @@ 5.3.25 + + org.bouncycastle + bcprov-jdk16 + 1.46 + diff --git a/src/main/java/com/zhangmeng/tools/controller/MusicDownloadController.java b/src/main/java/com/zhangmeng/tools/controller/MusicDownloadController.java index 08f8119..196d0b0 100644 --- a/src/main/java/com/zhangmeng/tools/controller/MusicDownloadController.java +++ b/src/main/java/com/zhangmeng/tools/controller/MusicDownloadController.java @@ -2,6 +2,7 @@ package com.zhangmeng.tools.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.UUID; import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; @@ -13,12 +14,17 @@ import com.zhangmeng.tools.music.kugou.KuGouMusic; import com.zhangmeng.tools.music.kuwo.DownLoadInfo; import com.zhangmeng.tools.music.kuwo.DownLoadURL; import com.zhangmeng.tools.music.kuwo.SearchByKey; +import com.zhangmeng.tools.music.migu.MiGuMusic; +import com.zhangmeng.tools.music.migu.SwitchType; +import com.zhangmeng.tools.music.qianqian.QianQianMusic; import com.zhangmeng.tools.music.qq.QQMusic; import com.zhangmeng.tools.music.qq.QqEncrypt; import com.zhangmeng.tools.music.qq.QqQuery; import com.zhangmeng.tools.music.wangyiyun.Song; import com.zhangmeng.tools.music.wangyiyun.WangYiYunMusic; import com.zhangmeng.tools.utils.AlertUtils; +import com.zhangmeng.tools.utils.EncryptUtils; +import io.netty.util.internal.StringUtil; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ChangeListener; @@ -29,29 +35,32 @@ import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.Md5Crypt; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; +import javax.script.Invocable; +import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; +import javax.script.ScriptException; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; +import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.security.MessageDigest; import java.sql.Blob; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; +import java.util.*; import static com.zhangmeng.tools.music.qq.RequestModule.apiServer; import static com.zhangmeng.tools.music.qq.RequestModule.headerMap; @@ -93,7 +102,7 @@ public class MusicDownloadController { @FXML public TextField name; - private SimpleIntegerProperty index = new SimpleIntegerProperty(0); + private final SimpleIntegerProperty index = new SimpleIntegerProperty(0); public static final String ku_wo_vip_api = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?pn=1&rn=30&httpsStatus=1&reqId=a3d144b0-9570-11ed-9918-83c8c32b357d&key="; @@ -104,6 +113,10 @@ public class MusicDownloadController { public static RestTemplate restTemplate; + @FXML + public Button downloading; + + @FXML public void initialize() { wangyiyun_music_init(); @@ -119,7 +132,7 @@ public class MusicDownloadController { @Override public void changed(ObservableValue observable, Tab oldValue, Tab newValue) { byte[] bytes = newValue.getText().getBytes(Charset.forName("GBk")); - String text = new String(bytes,StandardCharsets.UTF_8); + String text = new String(bytes, StandardCharsets.UTF_8); System.out.println(text); } }); @@ -140,50 +153,130 @@ public class MusicDownloadController { String title = name.getText(); switch (index.get()) { case 0 -> set(wangyiyun_music_table_view, get_wangyiyun_song_info(title)); - case 1 -> set(QQ_music_table_view,get_qq_song_info(title)); - case 2 -> set(kugou_music_table_view,get_ku_gou_info(title)); - case 3 -> set(kuwo_music_table_view,get_kuwo_song_info(title)); -// case 4 -> set(migu_music_table_view); -// case 5 -> set(qianqian_music_table_view); + case 1 -> set(QQ_music_table_view, get_qq_song_info(title)); + case 2 -> set(kugou_music_table_view, get_ku_gou_info(title)); + case 3 -> set(kuwo_music_table_view, get_kuwo_song_info(title)); + case 4 -> set(migu_music_table_view, get_migu_song_info(title)); + case 5 -> set(qianqian_music_table_view,get_qianqian_music_info(title)); } }); + downloading.setOnAction(event -> { + download_song(); + }); } - public ObservableList get_ku_gou_info(String title){ - ScriptEngineManager manager = new ScriptEngineManager(); + private ObservableList get_qianqian_music_info(String title) { + String api = "https://music.91q.com/v1/search?word=" + title+ "&pageNo=1&type=1×tamp=1682223843&appid=16073360&sign=36fa85caedcd22f0f46ba834679537df"; + String json = HttpRequest.get(api).timeout(20000).execute().body(); + QianQianMusic qianQianMusic = JSON.parseObject(json, QianQianMusic.class); + ObservableList list = FXCollections.observableArrayList(); + List results = qianQianMusic.getData().getTypeTrack(); + int id = 1; + for (QianQianMusic.DataBean.TypeTrackBean resList : results) { + SongInfo songInfo = new SongInfo(); + songInfo.setName(resList.getTitle()); + songInfo.setArtist(resList.getArtist().get(0).getName()); + songInfo.setAlbum(resList.getAlbumTitle()); + songInfo.setId(id); + id++; + list.add(songInfo); + } + return list; + } + public ObservableList get_migu_song_info(String title) { +// Map map = new HashMap<>(); +// map.put("song", 1); +// String searchSwitch = map.toString(); +// String sid = (uuid() + uuid()).replace("-", ""); +// String url = ""; +// String target_url = "https://jadeite.migu.cn/music_search/v2/search/searchAll?sid=" + sid + "&isCorrect=1&isCopyright=1&searchSwitch=" + encode(searchSwitch) + "&pageSize=20&text=" + encode(title) + "&pageNo=1&feature=1000000000&sort=1"; +// String deviceId = EncryptUtils.md5(uuid().replace("-", "")).toUpperCase(); +// long timestamp = new Date().getTime(); +// String signature_md5 = "6cdc72a439cef99a3418d2a78aa28c73"; // app绛惧悕璇佷功鐨刴d5 +// String text = title + signature_md5 + "yyapp2d16148780a1dcc7408e06336b98cfd50" + deviceId + timestamp; +// String sign = EncryptUtils.md5(text); +// +// Map headers = new HashMap<>(); +// headers.put("appId", "yyapp2"); +// headers.put("uiVersion", "A_music_3.3.0"); +// headers.put("version", "7.0.4"); +// headers.put("deviceId", deviceId); +// headers.put("sign", sign); +// headers.put("timestamp", timestamp); + SwitchType switchType = SwitchType.getSwitchType(); + Map map = new HashMap<>(); + map.put("feature","1111000000"); + map.put("isCopyright",1); + map.put("isCorrect",1); + map.put("pageIndex",1); + map.put("pageSize",20); + map.put("searchSwitch",JSON.toJSONString(switchType)); + map.put("sort",0); + map.put("text",title); + map.put("uiVersion","I_music_3.0.2"); + + String target_url = "http://jadeite.migu.cn:7090/music_search/v2/search/searchAll"; + String json = HttpRequest.get(target_url) + .form(map).timeout(20000).execute().body(); + + MiGuMusic miGuMusic = JSON.parseObject(json, MiGuMusic.class); + ObservableList list = FXCollections.observableArrayList(); + List results = miGuMusic.getSongResultData().getResult(); + int id = 1; + for (MiGuMusic.Result resList : results) { + SongInfo songInfo = new SongInfo(); + songInfo.setName(resList.getSongName()); + songInfo.setArtist(resList.getSinger()); + songInfo.setAlbum(resList.getAlbum()); + songInfo.setId(id); + id++; + list.add(songInfo); + } + return list; + } + + public String uuid() { + return UUID.randomUUID().toString(); + } + + public String encode(String url) { + return java.net.URLEncoder.encode(url, StandardCharsets.UTF_8); + } + + public ObservableList get_ku_gou_info(String title) { String api = "https://songsearch.kugou.com/song_search_v2"; ObservableList list = FXCollections.observableArrayList(); HashMap paramMap = new HashMap<>(); paramMap.put("keyword", title); paramMap.put("page", 1); - String result3= HttpUtil.get(api, paramMap); + String result3 = HttpUtil.get(api, paramMap); KuGouMusic kuGouMusic = JSON.parseObject(result3, KuGouMusic.class); - if (kuGouMusic.getData() != null){ + if (kuGouMusic.getData() != null) { List lists = kuGouMusic.getData().getLists(); int id = 1; for (KuGouMusic.ResList resList : lists) { SongInfo songInfo = new SongInfo(); - songInfo.setName( resList.getSongName()); + songInfo.setName(resList.getSongName()); songInfo.setArtist(resList.getSingerName()); songInfo.setAlbum(resList.getAlbumName()); songInfo.setId(id); - id ++; + id++; list.add(songInfo); } } return list; } - public ObservableList get_kuwo_song_info(String title){ + public ObservableList get_kuwo_song_info(String title) { ObservableList list = FXCollections.observableArrayList(); List lists = request_api(title); - int i = 0 ; + int i = 0; for (SongInfo listBean : lists) { - i = i + 1 ; + i = i + 1; listBean.setId(i); list.add(listBean); } @@ -199,7 +292,7 @@ public class MusicDownloadController { // } } - public static List request_api(String key) { + public static List request_api(String key) { String headers_json_path = MusicDownloadController.class.getClassLoader().getResource("headers.json").toExternalForm(); try { List list = FileUtil.readLines(new URL(headers_json_path), StandardCharsets.UTF_8); @@ -214,11 +307,11 @@ public class MusicDownloadController { } HttpEntity> httpEntity = new HttpEntity<>(headers); - if (restTemplate == null){ + if (restTemplate == null) { restTemplate = new RestTemplate(); } SearchByKey result = restTemplate.exchange(ku_wo_vip_api + key, HttpMethod.GET, httpEntity, SearchByKey.class).getBody(); - if (result != null){ + if (result != null) { data_bean.setValue(result); return result.getData().getList(); } @@ -229,7 +322,7 @@ public class MusicDownloadController { } - public ObservableList get_qq_song_info(String title){ + public ObservableList get_qq_song_info(String title) { ObservableList list = FXCollections.observableArrayList(); //String api = "https://u.y.qq.com/cgi-bin/musicu.fcg"; QqQuery query = new QqQuery(); @@ -248,11 +341,11 @@ public class MusicDownloadController { req.setParam(param); query.setReq(req); String q = JSON.toJSONString(query); - Random ran=new Random(System.currentTimeMillis()); + Random ran = new Random(System.currentTimeMillis()); String result2 = HttpRequest.post(apiServer[ran.nextInt(apiServer.length)]) - .header("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66") - .header("accept-encoding","application/json") - .form("sign",getSign(q))//表单内容 + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66") + .header("accept-encoding", "application/json") + .form("sign", getSign(q))//表单内容 .body(q) .timeout(20000)//超时,毫秒 .execute().body(); @@ -261,15 +354,15 @@ public class MusicDownloadController { QQMusic.ResData data = qqMusic.getReq().getData(); QQMusic.Song song = data.getBody().getSong(); List list1 = song.getList(); - if (list1.size()>0) { + if (list1.size() > 0) { int id = 1; for (QQMusic.ResList resList : list1) { SongInfo songInfo = new SongInfo(); - songInfo.setName( resList.getName()); + songInfo.setName(resList.getName()); songInfo.setArtist(resList.getSinger().get(0).getName()); songInfo.setAlbum(resList.getAlbum().getName()); songInfo.setId(id); - id ++; + id++; list.add(songInfo); } } @@ -277,7 +370,7 @@ public class MusicDownloadController { return list; } - public String getSign(String params){ + public String getSign(String params) { return QqEncrypt.getSign(JSON.toJSONString(params)); } @@ -296,7 +389,7 @@ public class MusicDownloadController { .timeout(20000)//超时,毫秒 .execute().body(); WangYiYunMusic wangYiYunMusic = JSON.parseObject(result2, WangYiYunMusic.class); - if (wangYiYunMusic.getResult() == null){ + if (wangYiYunMusic.getResult() == null) { result2 = HttpRequest.post(api) .header(Header.USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36")//头信息,多个头信息多次调用此方法即可 .form(query)//表单内容 @@ -322,15 +415,15 @@ public class MusicDownloadController { } - public static void set_songInfo(SongInfo listBean){ + public static void set_songInfo(SongInfo listBean) { String req_id = data_bean.getValue().getReqId(); int mid = listBean.getRid(); String url = download_url + "&reqId=" + req_id + "&mid=" + mid; - if (restTemplate == null){ + if (restTemplate == null) { restTemplate = new RestTemplate(); } - DownLoadURL result = restTemplate.getForObject(url ,DownLoadURL.class); - if (result != null){ + DownLoadURL result = restTemplate.getForObject(url, DownLoadURL.class); + if (result != null) { String url1 = result.getData().getUrl(); DownLoadInfo loadInfo = new DownLoadInfo(); loadInfo.setSong_url(url1); @@ -339,39 +432,39 @@ public class MusicDownloadController { down_load_info.set(loadInfo); } } -// -// public static void download_song(){ -// String path = "C:/Users/Administrator/Desktop/"; -// DownLoadInfo value = down_load_info.getValue(); -// if (value != null){ -// String song_name =value.getSong_author() + "--" + value.getSong_name() + ".mp3"; -// String save_path = path + song_name; -// save_file(save_path,value.getSong_url()); -// } -// } -// public static void save_file(String save_path,String download_url){ -// try { -// Path path1 = Paths.get(save_path); -// boolean exists = Files.exists(path1); -// if (!exists){ -// Files.createFile(path1); -// } -// File file = path1.toFile(); -// FileOutputStream fs = new FileOutputStream(file); -// URL url = new URL(download_url); -// InputStream inputStream = url.openStream(); -// int available = inputStream.available(); -// byte[] bytes = new byte[1024]; -// int byteRead = 0; -// while ((byteRead = inputStream.read(bytes)) != -1 ){ -// fs.write(bytes, 0, byteRead); -// } -// inputStream.close(); -// fs.close(); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } + + public static void download_song(){ + String path = "C:/Users/Administrator/Desktop/"; + DownLoadInfo value = down_load_info.getValue(); + if (value != null){ + String song_name =value.getSong_author() + "--" + value.getSong_name() + ".mp3"; + String save_path = path + song_name; + save_file(save_path,value.getSong_url()); + } + } + public static void save_file(String save_path,String download_url){ + try { + Path path1 = Paths.get(save_path); + boolean exists = Files.exists(path1); + if (!exists){ + Files.createFile(path1); + } + File file = path1.toFile(); + FileOutputStream fs = new FileOutputStream(file); + URL url = new URL(download_url); + InputStream inputStream = url.openStream(); + int available = inputStream.available(); + byte[] bytes = new byte[1024]; + int byteRead = 0; + while ((byteRead = inputStream.read(bytes)) != -1 ){ + fs.write(bytes, 0, byteRead); + } + inputStream.close(); + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } public void set(TableView tableView, ObservableList items) { @@ -427,5 +520,11 @@ public class MusicDownloadController { init_table.getColumns().add(song_name); init_table.getColumns().add(user_name); init_table.getColumns().add(zhuan_ji_name); + + init_table.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + if (newValue != null){ + set_songInfo(newValue); + } + }); } } diff --git a/src/main/java/com/zhangmeng/tools/music/migu/MiGuMusic.java b/src/main/java/com/zhangmeng/tools/music/migu/MiGuMusic.java new file mode 100644 index 0000000..fbdc6f6 --- /dev/null +++ b/src/main/java/com/zhangmeng/tools/music/migu/MiGuMusic.java @@ -0,0 +1,770 @@ +package com.zhangmeng.tools.music.migu; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : 芊芊墨客 + * @version : 1.0 + * @date : 2023-04-23 11:34 + */ +@Data +public class MiGuMusic { + + + public String code; + public ConcertResultData concertResultData; + public Integer dynamicEffect; + public Boolean end; + public String info; + public Integer mod; + public Integer resultNum; + public SongResultData songResultData; + + @Data + public static class Album { + + public String id; + public String name; + public String type; + + } + + + @Data + public static class AlbumImg { + + public String fileId; + public String img; + public String imgSizeType; + + } + + + @Data + public static class Artist { + + public String name; + public String id; + public String nameSpelling; + + } + + + @Data + public static class ConcertResultData { + + public List result = new ArrayList(); + public String totalCount; + + } + + + @Data + public static class ImgItem { + + public String fileId; + public String img; + public String imgSizeType; + + } + + + @Data + public static class MiguImgItem { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__1 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__10 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__11 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__12 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__13 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__14 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__15 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__16 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__17 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__18 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__19 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__2 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__20 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__21 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__22 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__3 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__4 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__5 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__6 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__7 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__8 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class MiguImgItem__9 { + + public String img; + public String imgSizeType; + public String fileId; + public String webpImg; + + } + + + @Data + public static class NewRateFormat { + + public String fileType; + public String format; + public String formatType; + public String price; + public String resourceType; + public String size; + public String androidAccuracyLevel; + public String androidFormat; + public String androidSize; + public String iosAccuracyLevel; + public String iosFormat; + public String iosSize; + public Integer androidBit; + public String androidNewFormat; + public Integer iosBit; + public List showTag = new ArrayList(); + + } + + + @Data + public static class OpNumItem { + + public Integer bookingNum; + public String bookingNumDesc; + public Integer commentNum; + public String commentNumDesc; + public Integer followNum; + public String followNumDesc; + public Integer keepNum; + public String keepNumDesc; + public Integer livePlayNum; + public String livePlayNumDesc; + public Integer orderNumByTotal; + public String orderNumByTotalDesc; + public Integer orderNumByWeek; + public String orderNumByWeekDesc; + public Integer playNum; + public String playNumDesc; + public Integer popularNum; + public String popularNumDesc; + public Integer shareNum; + public String shareNumDesc; + public Integer subscribeNum; + public String subscribeNumDesc; + public Integer thumbNum; + public String thumbNumDesc; + + } + + + @Data + public static class RateFormat { + + public String fileType; + public String format; + public String formatType; + public String price; + public String resourceType; + public String size; + public String androidAccuracyLevel; + public String androidFormat; + public String androidSize; + public String iosAccuracyLevel; + public String iosFormat; + public String iosSize; + public List showTag = new ArrayList(); + + } + + + @Data + public static class RelatedSong { + + public String copyrightId; + public String productId; + public String resourceType; + public String resourceTypeName; + + } + + + @Data + public static class Result { + + public String album; + public String albumId; + public List albumImgs = new ArrayList<>(); + public String albumNamePinyin; + public List albums = new ArrayList(); + public List artists = new ArrayList(); + public String chargeAuditions; + public String clickRatioString; + public Integer collect; + public String contentId; + public String copyright; + public String copyrightId; + public String dalbumId; + public String digitalColumnId; + public List highlightStr = new ArrayList<>(); + public String id; + public List imgItems = new ArrayList<>(); + public String invalidateDate; + public String isInDAlbum; + public String isInSalesPeriod; + public String isInSideDalbum; + public String lrcUrl; + public String lyricUrl; + public String mrcUrl; + public String mrcurl; + public String name; + public List newRateFormats = new ArrayList(); + public OpNumItem opNumItem; + public String originalSing; + public List rateFormats = new ArrayList(); + public List relatedSongs = new ArrayList(); + public String resourceType; + public String scopeOfcopyright; + public List showTag = new ArrayList(); + public String singer; + public String singerId; + public SingerImg singerImg; + public List singers = new ArrayList(); + public String songAliasName; + public String songDescs; + public String songId; + public String songName; + public String songNamePinyin; + public String songType; + public List tags = new ArrayList(); + public String toneControl; + public String toneControl2; + public List tones = new ArrayList(); + public String topQuality; + public String trcUrl; + public String vipType; + public String translateName; + public List lyricist = new ArrayList(); + public String listenFlag; + public List televisionNames = new ArrayList(); + public Z3dCode z3dCode; + + } + + + + + @Data + public static class Singer { + + public String id; + public String name; + + } + + + @Data + public static class SingerImg { + + public _1110025454 _1110025454; + public _1106612610 _1106612610; + public _1128041821 _1128041821; + public _1000000616 _1000000616; + public _259 _259; + public _1106069877 _1106069877; + public _1112416345 _1112416345; + public _1139999007 _1139999007; + public _1115824553 _1115824553; + public _484621 _484621; + public _1106620514 _1106620514; + public _375 _375; + public _1546 _1546; + public _1139071278 _1139071278; + public _5583 _5583; + public _965 _965; + public _59923 _59923; + public _127339 _127339; + public _1790 _1790; + public _1106265834 _1106265834; + public _1001636388 _1001636388; + public _1000285589 _1000285589; + public _1002164585 _1002164585; + public _1001769963 _1001769963; + + } + + + @Data + public static class SongResultData { + + public List correct = new ArrayList(); + public String isFromCache; + public List result = new ArrayList(); + public String resultType; + public String tipStatus; + public String totalCount; + + } + + + @Data + public static class Tone { + + public String copyrightId; + public String expireDate; + public String id; + public String price; + + } + + + @Data + public static class Z3dCode { + + public String androidFileKey; + public String androidFormat; + public String androidSize; + public String formatType; + public String h5Format; + public String h5Size; + public String iosFileKey; + public String iosFormat; + public String iosSize; + public String price; + public String resourceType; + + } + + + @Data + public static class _1000000616 { + + public String singerName; + public List miguImgItems = new ArrayList<>(); + + } + + + @Data + public static class _1000285589 { + + public String singerName; + public List miguImgItems = new ArrayList<>(); + + } + + + @Data + public static class _1001636388 { + + public String singerName; + public List miguImgItems = new ArrayList<>(); + + } + + + @Data + public static class _1001769963 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1002164585 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1106069877 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1106265834 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1106612610 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1106620514 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1110025454 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1112416345 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1115824553 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1128041821 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1139071278 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1139999007 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _127339 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1546 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _1790 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _259 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _375 { + + public String singerName; + public List miguImgItems = new ArrayList(); + } + + + @Data + public static class _484621 { + + public String singerName; + public List miguImgItems = new ArrayList(); + + } + + + @Data + public static class _5583 { + + public String singerName; + public List miguImgItems = new ArrayList(); + } + + + @Data + public static class _59923 { + + public String singerName; + public List miguImgItems = new ArrayList(); + } + + + @Data + public static class _965 { + + public String singerName; + public List miguImgItems = new ArrayList(); + } +} diff --git a/src/main/java/com/zhangmeng/tools/music/migu/SwitchType.java b/src/main/java/com/zhangmeng/tools/music/migu/SwitchType.java new file mode 100644 index 0000000..0968bcf --- /dev/null +++ b/src/main/java/com/zhangmeng/tools/music/migu/SwitchType.java @@ -0,0 +1,44 @@ +package com.zhangmeng.tools.music.migu; + +import lombok.Data; + +/** + * @author : 芊芊墨客 + * @version : 1.0 + * @date : 2023-04-23 12:02 + */ +@Data +public class SwitchType { + public Integer song; + public Integer album; + public Integer singer; + public Integer tagSong; + public Integer mvSong; + public Integer songlist; + public Integer bestShow; + public Integer lyricSong; + public Integer concert; + public Integer periodical; + public Integer ticket; + public Integer bit24; + public Integer verticalVideoTone; + + //{"song":1,"album":0,"singer":0,"tagSong":1,"mvSong":0,"songlist":0,"bestShow":1,"lyricSong":0,"concert":0,"periodical":0,"ticket":0,"bit24":0,"verticalVideoTone":0} + public static SwitchType getSwitchType (){ + SwitchType switchType = new SwitchType(); + switchType.setSong(1); + switchType.setAlbum(0); + switchType.setSinger(0); + switchType.setTagSong(1); + switchType.setMvSong(0); + switchType.setSonglist(0); + switchType.setBestShow(1); + switchType.setLyricSong(0); + switchType.setConcert(0); + switchType.setPeriodical(0); + switchType.setTicket(0); + switchType.setBit24(0); + switchType.setVerticalVideoTone(0); + return switchType; + } +} diff --git a/src/main/java/com/zhangmeng/tools/music/qianqian/QianQianMusic.java b/src/main/java/com/zhangmeng/tools/music/qianqian/QianQianMusic.java new file mode 100644 index 0000000..3fe7c7b --- /dev/null +++ b/src/main/java/com/zhangmeng/tools/music/qianqian/QianQianMusic.java @@ -0,0 +1,729 @@ +package com.zhangmeng.tools.music.qianqian; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +/** + * @author : 芊芊墨客 + * @version : 1.0 + * @date : 2023-04-23 12:26 + */ +public class QianQianMusic { + + + /** + * state : true + * errno : 22000 + * errmsg : + * elapsed_time : 0.0149 + * ip : 10.16.15.13 + * data : {"typeTrack":[{"afReplayGain":-2.720001,"albumAssetCode":"P10002166216","artist":[{"artistCode":"A10303625","gender":"未知","name":"岳佳","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"releaseDate":"2014-06-10T00:00:00.000Z","cpId":51,"isrc":"29ab81c314d321fb066d","pic":"https://img01.dmhmusic.com/0209/M00/63/1B/ChR461sYCUyAOYcwAA6N7BoRA-U202.jpg","sort":2,"meanVolume":0,"title":"风华佳月","maxVolume":0,"duration":243,"lyric":"https://static-qianqian.taihe.com/0209/M00/63/1B/ChR47FsYCUyALuoBAAAB3hm6k0U134.txt","assetId":"T10045929253","_trackId":14440531,"genre":"流行","albumTitle":"风华佳月","id":"T10045929253","lang":"中文","_score":284.89426,"TSID":"T10045929253","allRate":["64","320","128"],"pushTime":"2019-03-05T16:59:22+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1949031,"format":"aac"},"320":{"size":9800017,"format":"mp3"},"128":{"size":4037879,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10047903","birthday":"1969-10-14","gender":"男","name":"窦唯","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/D6/ChR461tM62aAYSCaAAEwE5YzEec838.jpg","region":""},{"artistCode":"A11724166","gender":"未知","name":"朝简","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":24,"pic":"https://img01.dmhmusic.com/0513/M00/F3/01/ChAKFGPsgO2ADdABAARhnJlBJwQ376.jpg","title":"佳","duration":572,"assetId":"T10061694380","genre":"实验","albumTitle":"声律启蒙(上卷)","id":"T10061694380","lang":"中文","afReplayGain":5.339996,"albumAssetCode":"P10003862912","releaseDate":"2021-07-30T00:00:00.000Z","isrc":"CN-Z79-21-00378","sort":9,"meanVolume":-25.5,"maxVolume":-1.5,"lyric":"https://static-qianqian.taihe.com/0513/M00/64/C9/ChAKCGPsgO2AH58MAAAEoFRwcMA497.lrc","pay_model":2,"_trackId":21330467,"_score":284.7205,"TSID":"T10061694380","allRate":["3000","320","128","64"],"pushTime":"2021-07-30T00:00:00+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":35058970,"format":"flac"},"320":{"size":22895973,"format":"mp3"},"128":{"size":9158490,"format":"mp3"},"64":{"size":4578976,"format":"aac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10048883","birthday":"1986-05-14","gender":"男","name":"许嵩","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E2/ChR47FtM6_qAYdtpAAJgVE2U6UI268.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0513/M00/5D/F8/ChAKCGPp_OOAPMjeAA24owP3aUw464.jpg","title":"艺术家们","duration":214,"assetId":"T10046349973","genre":"摇滚","albumTitle":"寻宝游戏","id":"T10046349973","lang":"中文","afReplayGain":-4.760002,"albumAssetCode":"P10002221002","releaseDate":"2018-07-12T00:00:00.000Z","isrc":"CN-Z17-18-00153","sort":5,"meanVolume":-11.1,"maxVolume":-0.1,"lyric":"https://static-qianqian.taihe.com/0513/M00/EC/31/ChAKE2Pp_OKAF-AaAAAFq0dCYGg364.lrc","pay_model":2,"_trackId":14647420,"_score":281.3409,"TSID":"T10046349973","allRate":["64","3000","320","128"],"pushTime":"2021-12-03T16:24:11+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1714562,"format":"aac"},"3000":{"size":24704933,"format":"flac"},"320":{"size":8573619,"format":"mp3"},"128":{"size":3429587,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A12254349","gender":"男","name":"MC HotDog热狗","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":76,"pic":"https://img01.dmhmusic.com/0513/M00/F8/4B/ChAKFGPvWDGABRU8AAH_OheSkAA169.jpg","title":"脏艺术家","duration":204,"assetId":"T10063531993","genre":"嘻哈","albumTitle":"脏艺术家","id":"T10063531993","lang":"中文","afReplayGain":-4.660004,"albumAssetCode":"P10004092981","releaseDate":"2022-08-20T12:00:00.000Z","isrc":"CNZ852204607","sort":1,"meanVolume":-10.7,"maxVolume":-0.1,"lyric":"https://static-qianqian.taihe.com/0513/M00/6A/13/ChAKCGPvWDaASnJsAAAKu1570iM188.txt","pay_model":2,"_trackId":22120771,"_score":279.88702,"TSID":"T10063531993","allRate":["64","128","320","3000"],"pushTime":"2022-11-07T18:28:49+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1637541,"format":"aac"},"128":{"size":3273844,"format":"mp3"},"320":{"size":8184244,"format":"mp3"},"3000":{"size":42688127,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"afReplayGain":-2.309998,"albumAssetCode":"P10002201216","artist":[{"artistCode":"A10299819","gender":"未知","name":"胡钰佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0210/M00/69/FE/ChR461tNC3OANnHwAACGutr2ZGA364.jpg","region":""}],"releaseDate":"2014-01-02T00:00:00.000Z","cpId":51,"isrc":null,"pic":"https://img01.dmhmusic.com/0208/M00/66/CC/ChR47FshQ6SAXcY6AACGutr2ZGA238.jpg","sort":1,"meanVolume":0,"title":"有爱就有佳","maxVolume":0,"duration":216,"lyric":"https://static-qianqian.taihe.com/0208/M00/66/CC/ChR461shQ6SAZAkTAAAFSKYp97c374.lrc","assetId":"T10046151951","_trackId":14546865,"genre":"流行","albumTitle":"有爱就有佳","id":"T10046151951","lang":"中文","_score":278.42093,"TSID":"T10046151951","allRate":["64","320","128"],"pushTime":"2019-03-05T17:04:40+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1735143,"format":"aac"},"320":{"size":8867167,"format":"mp3"},"128":{"size":4139284,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"月色 雷佳","duration":218,"assetId":"T10058961991","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961991","lang":"中文","afReplayGain":-3.080002,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":1,"meanVolume":-15.1,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqGABpcHAAAB5vKLhC0233.txt","_trackId":20026828,"_score":277.26187,"TSID":"T10058961991","allRate":["64","3000","320","128"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1745027,"format":"aac"},"3000":{"size":22040869,"format":"flac"},"320":{"size":8725147,"format":"mp3"},"128":{"size":3490208,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10048883","birthday":"1986-05-14","gender":"男","name":"许嵩","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E2/ChR47FtM6_qAYdtpAAJgVE2U6UI268.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0513/M00/EC/0E/ChAKE2Pp9iyAZ3fXAAhXK-uI26E819.jpg","title":"摄影艺术","duration":267,"assetId":"T10038929669","genre":"流行","albumTitle":"青年晚报","id":"T10038929669","lang":"中文","afReplayGain":-3.080002,"albumAssetCode":"P10001637078","releaseDate":"2016-06-27T00:00:00.000Z","isrc":"CN-Z17-16-00427","sort":3,"meanVolume":-11.2,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0513/M00/EC/0E/ChAKE2Pp9jCALafQAAALSsDDmFg131.lrc","pay_model":2,"_trackId":11557525,"_score":276.8362,"TSID":"T10038929669","allRate":["128","64","320","3000"],"pushTime":"2021-12-03T16:23:07+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"128":{"size":4278815,"format":"mp3"},"64":{"size":2139954,"format":"aac"},"320":{"size":10696787,"format":"mp3"},"3000":{"size":31954793,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A11266427","gender":"未知","name":"马艺修","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":51,"pic":"https://img01.dmhmusic.com/0208/M00/54/86/ChR461y-4yGAVZw4AAhtaLED4ko845.jpg","title":"马艺修-懂了","duration":241,"assetId":"T10049746489","genre":"流行","albumTitle":"马艺修-懂了","id":"T10049746489","lang":"中文","afReplayGain":-3.370003,"albumAssetCode":"P10002738303","releaseDate":"2019-04-24T00:00:00.000Z","isrc":null,"sort":1,"meanVolume":0,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0412/M00/20/4E/ChAKEl9Ii8KAJ9GxAAAGSb0Xt14953.lrc","_trackId":15559906,"_score":274.97516,"TSID":"T10049746489","allRate":["128","64","320","3000"],"pushTime":"2019-06-13T18:44:25+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"128":{"size":3865028,"format":"mp3"},"64":{"size":1933103,"format":"aac"},"320":{"size":9662331,"format":"mp3"},"3000":{"size":25627157,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"洱源情歌 雷佳","duration":181,"assetId":"T10058961997","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961997","lang":"中文","afReplayGain":-5.290001,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":4,"meanVolume":-15.5,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/BE/ChR45WJqBqGAc09DAAABretjiT8516.txt","_trackId":20026834,"_score":273.83307,"TSID":"T10058961997","allRate":["3000","128","320","64"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":18636052,"format":"flac"},"128":{"size":2904229,"format":"mp3"},"320":{"size":7260200,"format":"mp3"},"64":{"size":1451898,"format":"aac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"日光之城 雷佳","duration":298,"assetId":"T10058962002","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058962002","lang":"中文","afReplayGain":-2.279999,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":8,"meanVolume":-13.9,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqGAAGR-AAABY9EO0Ps400.txt","_trackId":20026839,"_score":272.06232,"TSID":"T10058962002","allRate":["320","128","64","3000"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"320":{"size":11930896,"format":"mp3"},"128":{"size":4772509,"format":"mp3"},"64":{"size":2386107,"format":"aac"},"3000":{"size":32828479,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"山茶说 雷佳","duration":250,"assetId":"T10058961994","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961994","lang":"中文","afReplayGain":-3.150002,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":2,"meanVolume":-14.2,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqGAWCREAAACjjsOZaI775.txt","_trackId":20026830,"_score":268.5869,"TSID":"T10058961994","allRate":["320","128","3000","64"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"320":{"size":10032316,"format":"mp3"},"128":{"size":4013077,"format":"mp3"},"3000":{"size":25886090,"format":"flac"},"64":{"size":2006390,"format":"aac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10337509","gender":"女","name":"张婉华","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/73/7D/ChR47FtNDiOAE0IeAAWMzxQHdMw637.jpg","region":""}],"cpId":51,"pic":"https://img01.dmhmusic.com/0207/M00/64/89/ChR461sY-xyAVvl6AATA3eomF0c106.jpg","title":"古魏新风","duration":216,"assetId":"T10046048206","genre":"流行","albumTitle":"古魏新风","id":"T10046048206","lang":"中文","afReplayGain":-3.93,"albumAssetCode":"P10002183619","releaseDate":"2016-04-13T00:00:00.000Z","isrc":"725ebb43d1b808dcd249","sort":1,"meanVolume":0,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0207/M00/64/89/ChR47FsY-xyAABoxAAAFOpr6BLY046.lrc","_trackId":14498359,"_score":268.47412,"TSID":"T10046048206","allRate":["3000","64","320","128"],"pushTime":"2019-03-05T17:02:43+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":24035022,"format":"flac"},"64":{"size":1732983,"format":"aac"},"320":{"size":8662476,"format":"mp3"},"128":{"size":3465153,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":51,"pic":"https://img01.dmhmusic.com/0206/M00/6B/BB/ChR47FsY2dyACGqAAEP1QLbna2I688.jpg","title":"为艺术为爱情","duration":232,"assetId":"T10046024665","genre":"流行","albumTitle":"雷佳博士毕业音乐会","id":"T10046024665","lang":"意大利语","afReplayGain":3.279999,"albumAssetCode":"P10002180447","releaseDate":"2017-06-27T00:00:00.000Z","isrc":null,"sort":7,"meanVolume":0,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0206/M00/6B/BB/ChR47FsY2dyAEVheAAACeaoPcac173.lrc","_trackId":14487135,"_score":267.93948,"TSID":"T10046024665","allRate":["3000","64","320","128"],"pushTime":"2019-03-05T17:02:07+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":16959520,"format":"flac"},"64":{"size":1862055,"format":"aac"},"320":{"size":9311142,"format":"mp3"},"128":{"size":3724491,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"放风筝 雷佳","duration":213,"assetId":"T10058961995","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961995","lang":"中文","afReplayGain":-4.269997,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":3,"meanVolume":-14.8,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/BE/ChR45WJqBqGAIQiGAAAC9QSTNxQ564.txt","_trackId":20026832,"_score":266.327,"TSID":"T10058961995","allRate":["64","128","320","3000"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1705088,"format":"aac"},"128":{"size":3410378,"format":"mp3"},"320":{"size":8525571,"format":"mp3"},"3000":{"size":24607691,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A11266427","gender":"未知","name":"马艺修","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":51,"pic":"https://img01.dmhmusic.com/0207/M00/54/BF/ChR461ysbhKASSMkAAsj5Y-t-iM041.jpg","title":"马艺修-半支恋曲","duration":226,"assetId":"T10049744346","genre":"流行","albumTitle":"马艺修-半支恋曲","id":"T10049744346","lang":"中文","afReplayGain":-1.269997,"albumAssetCode":"P10002737676","releaseDate":"2019-04-10T00:00:00.000Z","isrc":null,"sort":1,"meanVolume":0,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0412/M00/20/4E/ChAKEl9Ii8KAUt2PAAAEXQG-g4I294.lrc","_trackId":15558325,"_score":263.3665,"TSID":"T10049744346","allRate":["3000","64","320","128"],"pushTime":"2019-06-13T18:44:24+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":23608059,"format":"flac"},"64":{"size":1812142,"format":"aac"},"320":{"size":9057335,"format":"mp3"},"128":{"size":3623030,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A12254349","gender":"男","name":"MC HotDog热狗","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":76,"pic":"https://img01.dmhmusic.com/0513/M00/6A/10/ChAKCGPvV3yAcdEHAAHdUB6uAQ8177.jpg","title":"脏艺术家","duration":204,"assetId":"T10063539766","genre":"嘻哈","albumTitle":"中国说唱巅峰对决 第九期","id":"T10063539766","lang":"中文","afReplayGain":-4.660004,"albumAssetCode":"P10004092855","releaseDate":"2022-08-20T12:00:00.000Z","isrc":"CNZ852204607","sort":8,"meanVolume":-10.7,"maxVolume":-0.1,"lyric":"https://static-qianqian.taihe.com/0513/M00/6A/13/ChAKCGPvWDaASnJsAAAKu1570iM188.txt","pay_model":2,"_trackId":22120771,"_score":263.08533,"TSID":"T10063539766","allRate":["320","64","3000","128"],"pushTime":"2022-11-07T18:26:31+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"320":{"size":8184244,"format":"mp3"},"64":{"size":1637541,"format":"aac"},"3000":{"size":42688127,"format":"flac"},"128":{"size":3273844,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"思情鬼歌 雷佳","duration":266,"assetId":"T10058961999","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961999","lang":"中文","afReplayGain":-3.879997,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":5,"meanVolume":-13.5,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqSAemw8AAACkYi165w786.txt","_trackId":20026836,"_score":261.09048,"TSID":"T10058961999","allRate":["3000","128","320","64"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":28669714,"format":"flac"},"128":{"size":4268448,"format":"mp3"},"320":{"size":10670747,"format":"mp3"},"64":{"size":2134007,"format":"aac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"路过的眼睛 雷佳","duration":197,"assetId":"T10058962004","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058962004","lang":"中文","afReplayGain":-4.090004,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":10,"meanVolume":-14.7,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqGAUlXDAAADIB69gqs176.txt","_trackId":20026841,"_score":260.09048,"TSID":"T10058962004","allRate":["3000","320","64","128"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":19719776,"format":"flac"},"320":{"size":7903857,"format":"mp3"},"64":{"size":1580815,"format":"aac"},"128":{"size":3161692,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A11076738","birthday":"1970-07-19","gender":"女","name":"陈珊妮","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/DA/ChR461tM65uAcigWAChcc98Vx0A586.jpg","region":"港台"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0513/M00/60/9F/ChAKCGPrCFCACkiiAAxwYXy5RPM645.jpg","title":"不要不要 feat. 魏如萱","duration":192,"assetId":"T10056548808","genre":"流行","albumTitle":"战神卡尔迪亚","id":"T10056548808","lang":"中文","afReplayGain":-3.510002,"albumAssetCode":"P10003464466","releaseDate":"2017-10-03T00:00:00.000Z","trail_audio_info":{"duration":"30","start_time":"0","path":"http://audio04.dmhmusic.com/71_53_T10056548808_128_4_4_0_sdk-cpm/cn/0412/M00/77/F9/ChAKEl-GWoOAZs0KAAdYO6LBmjM588.mp3?xcode=fd2bbe314e1442d1bdcea3346476bba2b4ff7c8","rate":128,"expireTime":1682227221},"isrc":"TW-N01-1701011","sort":11,"meanVolume":-10.5,"maxVolume":-0.6,"lyric":"https://static-qianqian.taihe.com/0513/M00/EE/D7/ChAKFGPrCEqAW_cXAAAEJMZ7diw417.txt","pay_model":3,"_trackId":18855274,"_score":257.74615,"TSID":"T10056548808","allRate":["64","128","3000","320"],"pushTime":"2020-09-01T10:00:00+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1542652,"format":"aac"},"128":{"size":3084388,"format":"mp3"},"3000":{"size":38891312,"format":"flac"},"320":{"size":7710570,"format":"mp3"}},"isFavorite":0,"isVip":1,"isPaid":0},{"artist":[{"artistCode":"A12256257","gender":"未知","name":"JY陈杰阳","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":76,"pic":"https://img01.dmhmusic.com/0513/M00/6A/39/ChAKCGPvYY2AJ8e9AAJUlcN3O6Y928.jpg","title":"米佳的爱情","duration":201,"assetId":"T10063551125","genre":"嘻哈","albumTitle":"米佳的爱情","id":"T10063551125","lang":"中文","afReplayGain":-1.959999,"albumAssetCode":"P10004095222","releaseDate":"2022-11-14T00:00:00.000Z","isrc":"CNZ852207570","sort":1,"meanVolume":-11.4,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0513/M00/F8/71/ChAKFGPvYY2APAsCAAAKn2vjeMw157.lrc","pay_model":2,"_trackId":22132457,"_score":257.02274,"TSID":"T10063551125","allRate":["128","64","320","3000"],"pushTime":"2022-11-14T14:04:47+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"128":{"size":3223763,"format":"mp3"},"64":{"size":1612374,"format":"aac"},"320":{"size":8059342,"format":"mp3"},"3000":{"size":38097778,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0}],"typeArtist":[],"typeAlbum":[],"typeResources":[],"total":2719,"searchMode":"match","debug":"retry","haveMore":1} + */ + + private boolean state; + private int errno; + private String errmsg; + private String elapsed_time; + private String ip; + private DataBean data; + + public boolean isState() { + return state; + } + + public void setState(boolean state) { + this.state = state; + } + + public int getErrno() { + return errno; + } + + public void setErrno(int errno) { + this.errno = errno; + } + + public String getErrmsg() { + return errmsg; + } + + public void setErrmsg(String errmsg) { + this.errmsg = errmsg; + } + + public String getElapsed_time() { + return elapsed_time; + } + + public void setElapsed_time(String elapsed_time) { + this.elapsed_time = elapsed_time; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public static class DataBean { + /** + * typeTrack : [{"afReplayGain":-2.720001,"albumAssetCode":"P10002166216","artist":[{"artistCode":"A10303625","gender":"未知","name":"岳佳","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"releaseDate":"2014-06-10T00:00:00.000Z","cpId":51,"isrc":"29ab81c314d321fb066d","pic":"https://img01.dmhmusic.com/0209/M00/63/1B/ChR461sYCUyAOYcwAA6N7BoRA-U202.jpg","sort":2,"meanVolume":0,"title":"风华佳月","maxVolume":0,"duration":243,"lyric":"https://static-qianqian.taihe.com/0209/M00/63/1B/ChR47FsYCUyALuoBAAAB3hm6k0U134.txt","assetId":"T10045929253","_trackId":14440531,"genre":"流行","albumTitle":"风华佳月","id":"T10045929253","lang":"中文","_score":284.89426,"TSID":"T10045929253","allRate":["64","320","128"],"pushTime":"2019-03-05T16:59:22+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1949031,"format":"aac"},"320":{"size":9800017,"format":"mp3"},"128":{"size":4037879,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10047903","birthday":"1969-10-14","gender":"男","name":"窦唯","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/D6/ChR461tM62aAYSCaAAEwE5YzEec838.jpg","region":""},{"artistCode":"A11724166","gender":"未知","name":"朝简","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":24,"pic":"https://img01.dmhmusic.com/0513/M00/F3/01/ChAKFGPsgO2ADdABAARhnJlBJwQ376.jpg","title":"佳","duration":572,"assetId":"T10061694380","genre":"实验","albumTitle":"声律启蒙(上卷)","id":"T10061694380","lang":"中文","afReplayGain":5.339996,"albumAssetCode":"P10003862912","releaseDate":"2021-07-30T00:00:00.000Z","isrc":"CN-Z79-21-00378","sort":9,"meanVolume":-25.5,"maxVolume":-1.5,"lyric":"https://static-qianqian.taihe.com/0513/M00/64/C9/ChAKCGPsgO2AH58MAAAEoFRwcMA497.lrc","pay_model":2,"_trackId":21330467,"_score":284.7205,"TSID":"T10061694380","allRate":["3000","320","128","64"],"pushTime":"2021-07-30T00:00:00+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":35058970,"format":"flac"},"320":{"size":22895973,"format":"mp3"},"128":{"size":9158490,"format":"mp3"},"64":{"size":4578976,"format":"aac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10048883","birthday":"1986-05-14","gender":"男","name":"许嵩","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E2/ChR47FtM6_qAYdtpAAJgVE2U6UI268.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0513/M00/5D/F8/ChAKCGPp_OOAPMjeAA24owP3aUw464.jpg","title":"艺术家们","duration":214,"assetId":"T10046349973","genre":"摇滚","albumTitle":"寻宝游戏","id":"T10046349973","lang":"中文","afReplayGain":-4.760002,"albumAssetCode":"P10002221002","releaseDate":"2018-07-12T00:00:00.000Z","isrc":"CN-Z17-18-00153","sort":5,"meanVolume":-11.1,"maxVolume":-0.1,"lyric":"https://static-qianqian.taihe.com/0513/M00/EC/31/ChAKE2Pp_OKAF-AaAAAFq0dCYGg364.lrc","pay_model":2,"_trackId":14647420,"_score":281.3409,"TSID":"T10046349973","allRate":["64","3000","320","128"],"pushTime":"2021-12-03T16:24:11+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1714562,"format":"aac"},"3000":{"size":24704933,"format":"flac"},"320":{"size":8573619,"format":"mp3"},"128":{"size":3429587,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A12254349","gender":"男","name":"MC HotDog热狗","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":76,"pic":"https://img01.dmhmusic.com/0513/M00/F8/4B/ChAKFGPvWDGABRU8AAH_OheSkAA169.jpg","title":"脏艺术家","duration":204,"assetId":"T10063531993","genre":"嘻哈","albumTitle":"脏艺术家","id":"T10063531993","lang":"中文","afReplayGain":-4.660004,"albumAssetCode":"P10004092981","releaseDate":"2022-08-20T12:00:00.000Z","isrc":"CNZ852204607","sort":1,"meanVolume":-10.7,"maxVolume":-0.1,"lyric":"https://static-qianqian.taihe.com/0513/M00/6A/13/ChAKCGPvWDaASnJsAAAKu1570iM188.txt","pay_model":2,"_trackId":22120771,"_score":279.88702,"TSID":"T10063531993","allRate":["64","128","320","3000"],"pushTime":"2022-11-07T18:28:49+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1637541,"format":"aac"},"128":{"size":3273844,"format":"mp3"},"320":{"size":8184244,"format":"mp3"},"3000":{"size":42688127,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"afReplayGain":-2.309998,"albumAssetCode":"P10002201216","artist":[{"artistCode":"A10299819","gender":"未知","name":"胡钰佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0210/M00/69/FE/ChR461tNC3OANnHwAACGutr2ZGA364.jpg","region":""}],"releaseDate":"2014-01-02T00:00:00.000Z","cpId":51,"isrc":null,"pic":"https://img01.dmhmusic.com/0208/M00/66/CC/ChR47FshQ6SAXcY6AACGutr2ZGA238.jpg","sort":1,"meanVolume":0,"title":"有爱就有佳","maxVolume":0,"duration":216,"lyric":"https://static-qianqian.taihe.com/0208/M00/66/CC/ChR461shQ6SAZAkTAAAFSKYp97c374.lrc","assetId":"T10046151951","_trackId":14546865,"genre":"流行","albumTitle":"有爱就有佳","id":"T10046151951","lang":"中文","_score":278.42093,"TSID":"T10046151951","allRate":["64","320","128"],"pushTime":"2019-03-05T17:04:40+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1735143,"format":"aac"},"320":{"size":8867167,"format":"mp3"},"128":{"size":4139284,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"月色 雷佳","duration":218,"assetId":"T10058961991","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961991","lang":"中文","afReplayGain":-3.080002,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":1,"meanVolume":-15.1,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqGABpcHAAAB5vKLhC0233.txt","_trackId":20026828,"_score":277.26187,"TSID":"T10058961991","allRate":["64","3000","320","128"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1745027,"format":"aac"},"3000":{"size":22040869,"format":"flac"},"320":{"size":8725147,"format":"mp3"},"128":{"size":3490208,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10048883","birthday":"1986-05-14","gender":"男","name":"许嵩","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E2/ChR47FtM6_qAYdtpAAJgVE2U6UI268.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0513/M00/EC/0E/ChAKE2Pp9iyAZ3fXAAhXK-uI26E819.jpg","title":"摄影艺术","duration":267,"assetId":"T10038929669","genre":"流行","albumTitle":"青年晚报","id":"T10038929669","lang":"中文","afReplayGain":-3.080002,"albumAssetCode":"P10001637078","releaseDate":"2016-06-27T00:00:00.000Z","isrc":"CN-Z17-16-00427","sort":3,"meanVolume":-11.2,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0513/M00/EC/0E/ChAKE2Pp9jCALafQAAALSsDDmFg131.lrc","pay_model":2,"_trackId":11557525,"_score":276.8362,"TSID":"T10038929669","allRate":["128","64","320","3000"],"pushTime":"2021-12-03T16:23:07+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"128":{"size":4278815,"format":"mp3"},"64":{"size":2139954,"format":"aac"},"320":{"size":10696787,"format":"mp3"},"3000":{"size":31954793,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A11266427","gender":"未知","name":"马艺修","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":51,"pic":"https://img01.dmhmusic.com/0208/M00/54/86/ChR461y-4yGAVZw4AAhtaLED4ko845.jpg","title":"马艺修-懂了","duration":241,"assetId":"T10049746489","genre":"流行","albumTitle":"马艺修-懂了","id":"T10049746489","lang":"中文","afReplayGain":-3.370003,"albumAssetCode":"P10002738303","releaseDate":"2019-04-24T00:00:00.000Z","isrc":null,"sort":1,"meanVolume":0,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0412/M00/20/4E/ChAKEl9Ii8KAJ9GxAAAGSb0Xt14953.lrc","_trackId":15559906,"_score":274.97516,"TSID":"T10049746489","allRate":["128","64","320","3000"],"pushTime":"2019-06-13T18:44:25+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"128":{"size":3865028,"format":"mp3"},"64":{"size":1933103,"format":"aac"},"320":{"size":9662331,"format":"mp3"},"3000":{"size":25627157,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"洱源情歌 雷佳","duration":181,"assetId":"T10058961997","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961997","lang":"中文","afReplayGain":-5.290001,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":4,"meanVolume":-15.5,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/BE/ChR45WJqBqGAc09DAAABretjiT8516.txt","_trackId":20026834,"_score":273.83307,"TSID":"T10058961997","allRate":["3000","128","320","64"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":18636052,"format":"flac"},"128":{"size":2904229,"format":"mp3"},"320":{"size":7260200,"format":"mp3"},"64":{"size":1451898,"format":"aac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"日光之城 雷佳","duration":298,"assetId":"T10058962002","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058962002","lang":"中文","afReplayGain":-2.279999,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":8,"meanVolume":-13.9,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqGAAGR-AAABY9EO0Ps400.txt","_trackId":20026839,"_score":272.06232,"TSID":"T10058962002","allRate":["320","128","64","3000"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"320":{"size":11930896,"format":"mp3"},"128":{"size":4772509,"format":"mp3"},"64":{"size":2386107,"format":"aac"},"3000":{"size":32828479,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"山茶说 雷佳","duration":250,"assetId":"T10058961994","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961994","lang":"中文","afReplayGain":-3.150002,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":2,"meanVolume":-14.2,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqGAWCREAAACjjsOZaI775.txt","_trackId":20026830,"_score":268.5869,"TSID":"T10058961994","allRate":["320","128","3000","64"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"320":{"size":10032316,"format":"mp3"},"128":{"size":4013077,"format":"mp3"},"3000":{"size":25886090,"format":"flac"},"64":{"size":2006390,"format":"aac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10337509","gender":"女","name":"张婉华","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/73/7D/ChR47FtNDiOAE0IeAAWMzxQHdMw637.jpg","region":""}],"cpId":51,"pic":"https://img01.dmhmusic.com/0207/M00/64/89/ChR461sY-xyAVvl6AATA3eomF0c106.jpg","title":"古魏新风","duration":216,"assetId":"T10046048206","genre":"流行","albumTitle":"古魏新风","id":"T10046048206","lang":"中文","afReplayGain":-3.93,"albumAssetCode":"P10002183619","releaseDate":"2016-04-13T00:00:00.000Z","isrc":"725ebb43d1b808dcd249","sort":1,"meanVolume":0,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0207/M00/64/89/ChR47FsY-xyAABoxAAAFOpr6BLY046.lrc","_trackId":14498359,"_score":268.47412,"TSID":"T10046048206","allRate":["3000","64","320","128"],"pushTime":"2019-03-05T17:02:43+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":24035022,"format":"flac"},"64":{"size":1732983,"format":"aac"},"320":{"size":8662476,"format":"mp3"},"128":{"size":3465153,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":51,"pic":"https://img01.dmhmusic.com/0206/M00/6B/BB/ChR47FsY2dyACGqAAEP1QLbna2I688.jpg","title":"为艺术为爱情","duration":232,"assetId":"T10046024665","genre":"流行","albumTitle":"雷佳博士毕业音乐会","id":"T10046024665","lang":"意大利语","afReplayGain":3.279999,"albumAssetCode":"P10002180447","releaseDate":"2017-06-27T00:00:00.000Z","isrc":null,"sort":7,"meanVolume":0,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0206/M00/6B/BB/ChR47FsY2dyAEVheAAACeaoPcac173.lrc","_trackId":14487135,"_score":267.93948,"TSID":"T10046024665","allRate":["3000","64","320","128"],"pushTime":"2019-03-05T17:02:07+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":16959520,"format":"flac"},"64":{"size":1862055,"format":"aac"},"320":{"size":9311142,"format":"mp3"},"128":{"size":3724491,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"放风筝 雷佳","duration":213,"assetId":"T10058961995","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961995","lang":"中文","afReplayGain":-4.269997,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":3,"meanVolume":-14.8,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/BE/ChR45WJqBqGAIQiGAAAC9QSTNxQ564.txt","_trackId":20026832,"_score":266.327,"TSID":"T10058961995","allRate":["64","128","320","3000"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1705088,"format":"aac"},"128":{"size":3410378,"format":"mp3"},"320":{"size":8525571,"format":"mp3"},"3000":{"size":24607691,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A11266427","gender":"未知","name":"马艺修","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":51,"pic":"https://img01.dmhmusic.com/0207/M00/54/BF/ChR461ysbhKASSMkAAsj5Y-t-iM041.jpg","title":"马艺修-半支恋曲","duration":226,"assetId":"T10049744346","genre":"流行","albumTitle":"马艺修-半支恋曲","id":"T10049744346","lang":"中文","afReplayGain":-1.269997,"albumAssetCode":"P10002737676","releaseDate":"2019-04-10T00:00:00.000Z","isrc":null,"sort":1,"meanVolume":0,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0412/M00/20/4E/ChAKEl9Ii8KAUt2PAAAEXQG-g4I294.lrc","_trackId":15558325,"_score":263.3665,"TSID":"T10049744346","allRate":["3000","64","320","128"],"pushTime":"2019-06-13T18:44:24+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":23608059,"format":"flac"},"64":{"size":1812142,"format":"aac"},"320":{"size":9057335,"format":"mp3"},"128":{"size":3623030,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A12254349","gender":"男","name":"MC HotDog热狗","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":76,"pic":"https://img01.dmhmusic.com/0513/M00/6A/10/ChAKCGPvV3yAcdEHAAHdUB6uAQ8177.jpg","title":"脏艺术家","duration":204,"assetId":"T10063539766","genre":"嘻哈","albumTitle":"中国说唱巅峰对决 第九期","id":"T10063539766","lang":"中文","afReplayGain":-4.660004,"albumAssetCode":"P10004092855","releaseDate":"2022-08-20T12:00:00.000Z","isrc":"CNZ852204607","sort":8,"meanVolume":-10.7,"maxVolume":-0.1,"lyric":"https://static-qianqian.taihe.com/0513/M00/6A/13/ChAKCGPvWDaASnJsAAAKu1570iM188.txt","pay_model":2,"_trackId":22120771,"_score":263.08533,"TSID":"T10063539766","allRate":["320","64","3000","128"],"pushTime":"2022-11-07T18:26:31+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"320":{"size":8184244,"format":"mp3"},"64":{"size":1637541,"format":"aac"},"3000":{"size":42688127,"format":"flac"},"128":{"size":3273844,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"思情鬼歌 雷佳","duration":266,"assetId":"T10058961999","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058961999","lang":"中文","afReplayGain":-3.879997,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":5,"meanVolume":-13.5,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqSAemw8AAACkYi165w786.txt","_trackId":20026836,"_score":261.09048,"TSID":"T10058961999","allRate":["3000","128","320","64"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":28669714,"format":"flac"},"128":{"size":4268448,"format":"mp3"},"320":{"size":10670747,"format":"mp3"},"64":{"size":2134007,"format":"aac"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A10049258","birthday":"1979-10-19","gender":"女","name":"雷佳","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/E6/ChR47FtM7DKAIpaZAAKP4HmSJbA908.jpg","region":"内地"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0103/M00/CF/BE/ChR45WJqBqGATyEmAATZP8_pPYk294.jpg","title":"路过的眼睛 雷佳","duration":197,"assetId":"T10058962004","genre":"中国特色","albumTitle":"蒲公英的天空(雷佳唱响各地民歌 世界音乐风格十足)","id":"T10058962004","lang":"中文","afReplayGain":-4.090004,"albumAssetCode":"P10003641202","releaseDate":"2006-05-23T00:00:00.000Z","isrc":null,"sort":10,"meanVolume":-14.7,"maxVolume":-0.5,"lyric":"https://static-qianqian.taihe.com/0103/M00/CF/EC/ChR45GJqBqGAUlXDAAADIB69gqs176.txt","_trackId":20026841,"_score":260.09048,"TSID":"T10058962004","allRate":["3000","320","64","128"],"pushTime":"2021-02-01T15:56:56+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"3000":{"size":19719776,"format":"flac"},"320":{"size":7903857,"format":"mp3"},"64":{"size":1580815,"format":"aac"},"128":{"size":3161692,"format":"mp3"}},"isFavorite":0,"isVip":0,"isPaid":0},{"artist":[{"artistCode":"A11076738","birthday":"1970-07-19","gender":"女","name":"陈珊妮","artistType":38,"artistTypeName":"歌手","pic":"https://img01.dmhmusic.com/0206/M00/70/DA/ChR461tM65uAcigWAChcc98Vx0A586.jpg","region":"港台"}],"cpId":23,"pic":"https://img01.dmhmusic.com/0513/M00/60/9F/ChAKCGPrCFCACkiiAAxwYXy5RPM645.jpg","title":"不要不要 feat. 魏如萱","duration":192,"assetId":"T10056548808","genre":"流行","albumTitle":"战神卡尔迪亚","id":"T10056548808","lang":"中文","afReplayGain":-3.510002,"albumAssetCode":"P10003464466","releaseDate":"2017-10-03T00:00:00.000Z","trail_audio_info":{"duration":"30","start_time":"0","path":"http://audio04.dmhmusic.com/71_53_T10056548808_128_4_4_0_sdk-cpm/cn/0412/M00/77/F9/ChAKEl-GWoOAZs0KAAdYO6LBmjM588.mp3?xcode=fd2bbe314e1442d1bdcea3346476bba2b4ff7c8","rate":128,"expireTime":1682227221},"isrc":"TW-N01-1701011","sort":11,"meanVolume":-10.5,"maxVolume":-0.6,"lyric":"https://static-qianqian.taihe.com/0513/M00/EE/D7/ChAKFGPrCEqAW_cXAAAEJMZ7diw417.txt","pay_model":3,"_trackId":18855274,"_score":257.74615,"TSID":"T10056548808","allRate":["64","128","3000","320"],"pushTime":"2020-09-01T10:00:00+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"64":{"size":1542652,"format":"aac"},"128":{"size":3084388,"format":"mp3"},"3000":{"size":38891312,"format":"flac"},"320":{"size":7710570,"format":"mp3"}},"isFavorite":0,"isVip":1,"isPaid":0},{"artist":[{"artistCode":"A12256257","gender":"未知","name":"JY陈杰阳","artistType":38,"artistTypeName":"歌手","pic":"","region":""}],"cpId":76,"pic":"https://img01.dmhmusic.com/0513/M00/6A/39/ChAKCGPvYY2AJ8e9AAJUlcN3O6Y928.jpg","title":"米佳的爱情","duration":201,"assetId":"T10063551125","genre":"嘻哈","albumTitle":"米佳的爱情","id":"T10063551125","lang":"中文","afReplayGain":-1.959999,"albumAssetCode":"P10004095222","releaseDate":"2022-11-14T00:00:00.000Z","isrc":"CNZ852207570","sort":1,"meanVolume":-11.4,"maxVolume":0,"lyric":"https://static-qianqian.taihe.com/0513/M00/F8/71/ChAKFGPvYY2APAsCAAAKn2vjeMw157.lrc","pay_model":2,"_trackId":22132457,"_score":257.02274,"TSID":"T10063551125","allRate":["128","64","320","3000"],"pushTime":"2022-11-14T14:04:47+08:00","downTime":"2037-01-01T00:00:00+08:00","bizList":["sdk_cpm"],"rateFileInfo":{"128":{"size":3223763,"format":"mp3"},"64":{"size":1612374,"format":"aac"},"320":{"size":8059342,"format":"mp3"},"3000":{"size":38097778,"format":"flac"}},"isFavorite":0,"isVip":0,"isPaid":0}] + * typeArtist : [] + * typeAlbum : [] + * typeResources : [] + * total : 2719 + * searchMode : match + * debug : retry + * haveMore : 1 + */ + + private int total; + private String searchMode; + private String debug; + private int haveMore; + private List typeTrack; + private List typeArtist; + private List typeAlbum; + private List typeResources; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public String getSearchMode() { + return searchMode; + } + + public void setSearchMode(String searchMode) { + this.searchMode = searchMode; + } + + public String getDebug() { + return debug; + } + + public void setDebug(String debug) { + this.debug = debug; + } + + public int getHaveMore() { + return haveMore; + } + + public void setHaveMore(int haveMore) { + this.haveMore = haveMore; + } + + public List getTypeTrack() { + return typeTrack; + } + + public void setTypeTrack(List typeTrack) { + this.typeTrack = typeTrack; + } + + public List getTypeArtist() { + return typeArtist; + } + + public void setTypeArtist(List typeArtist) { + this.typeArtist = typeArtist; + } + + public List getTypeAlbum() { + return typeAlbum; + } + + public void setTypeAlbum(List typeAlbum) { + this.typeAlbum = typeAlbum; + } + + public List getTypeResources() { + return typeResources; + } + + public void setTypeResources(List typeResources) { + this.typeResources = typeResources; + } + + public static class TypeTrackBean { + /** + * afReplayGain : -2.720001 + * albumAssetCode : P10002166216 + * artist : [{"artistCode":"A10303625","gender":"未知","name":"岳佳","artistType":38,"artistTypeName":"歌手","pic":"","region":""}] + * releaseDate : 2014-06-10T00:00:00.000Z + * cpId : 51 + * isrc : 29ab81c314d321fb066d + * pic : https://img01.dmhmusic.com/0209/M00/63/1B/ChR461sYCUyAOYcwAA6N7BoRA-U202.jpg + * sort : 2 + * meanVolume : 0 + * title : 风华佳月 + * maxVolume : 0 + * duration : 243 + * lyric : https://static-qianqian.taihe.com/0209/M00/63/1B/ChR47FsYCUyALuoBAAAB3hm6k0U134.txt + * assetId : T10045929253 + * _trackId : 14440531 + * genre : 流行 + * albumTitle : 风华佳月 + * id : T10045929253 + * lang : 中文 + * _score : 284.89426 + * TSID : T10045929253 + * allRate : ["64","320","128"] + * pushTime : 2019-03-05T16:59:22+08:00 + * downTime : 2037-01-01T00:00:00+08:00 + * bizList : ["sdk_cpm"] + * rateFileInfo : {"64":{"size":1949031,"format":"aac"},"320":{"size":9800017,"format":"mp3"},"128":{"size":4037879,"format":"mp3"}} + * isFavorite : 0 + * isVip : 0 + * isPaid : 0 + * pay_model : 2 + * trail_audio_info : {"duration":"30","start_time":"0","path":"http://audio04.dmhmusic.com/71_53_T10056548808_128_4_4_0_sdk-cpm/cn/0412/M00/77/F9/ChAKEl-GWoOAZs0KAAdYO6LBmjM588.mp3?xcode=fd2bbe314e1442d1bdcea3346476bba2b4ff7c8","rate":128,"expireTime":1682227221} + */ + + private double afReplayGain; + private String albumAssetCode; + private String releaseDate; + private int cpId; + private String isrc; + private String pic; + private int sort; + private int meanVolume; + private String title; + private int maxVolume; + private int duration; + private String lyric; + private String assetId; + private int _trackId; + private String genre; + private String albumTitle; + private String id; + private String lang; + private double _score; + private String TSID; + private String pushTime; + private String downTime; + private RateFileInfoBean rateFileInfo; + private int isFavorite; + private int isVip; + private int isPaid; + private int pay_model; + private TrailAudioInfoBean trail_audio_info; + private List artist; + private List allRate; + private List bizList; + + public double getAfReplayGain() { + return afReplayGain; + } + + public void setAfReplayGain(double afReplayGain) { + this.afReplayGain = afReplayGain; + } + + public String getAlbumAssetCode() { + return albumAssetCode; + } + + public void setAlbumAssetCode(String albumAssetCode) { + this.albumAssetCode = albumAssetCode; + } + + public String getReleaseDate() { + return releaseDate; + } + + public void setReleaseDate(String releaseDate) { + this.releaseDate = releaseDate; + } + + public int getCpId() { + return cpId; + } + + public void setCpId(int cpId) { + this.cpId = cpId; + } + + public String getIsrc() { + return isrc; + } + + public void setIsrc(String isrc) { + this.isrc = isrc; + } + + public String getPic() { + return pic; + } + + public void setPic(String pic) { + this.pic = pic; + } + + public int getSort() { + return sort; + } + + public void setSort(int sort) { + this.sort = sort; + } + + public int getMeanVolume() { + return meanVolume; + } + + public void setMeanVolume(int meanVolume) { + this.meanVolume = meanVolume; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getMaxVolume() { + return maxVolume; + } + + public void setMaxVolume(int maxVolume) { + this.maxVolume = maxVolume; + } + + public int getDuration() { + return duration; + } + + public void setDuration(int duration) { + this.duration = duration; + } + + public String getLyric() { + return lyric; + } + + public void setLyric(String lyric) { + this.lyric = lyric; + } + + public String getAssetId() { + return assetId; + } + + public void setAssetId(String assetId) { + this.assetId = assetId; + } + + public int get_trackId() { + return _trackId; + } + + public void set_trackId(int _trackId) { + this._trackId = _trackId; + } + + public String getGenre() { + return genre; + } + + public void setGenre(String genre) { + this.genre = genre; + } + + public String getAlbumTitle() { + return albumTitle; + } + + public void setAlbumTitle(String albumTitle) { + this.albumTitle = albumTitle; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLang() { + return lang; + } + + public void setLang(String lang) { + this.lang = lang; + } + + public double get_score() { + return _score; + } + + public void set_score(double _score) { + this._score = _score; + } + + public String getTSID() { + return TSID; + } + + public void setTSID(String TSID) { + this.TSID = TSID; + } + + public String getPushTime() { + return pushTime; + } + + public void setPushTime(String pushTime) { + this.pushTime = pushTime; + } + + public String getDownTime() { + return downTime; + } + + public void setDownTime(String downTime) { + this.downTime = downTime; + } + + public RateFileInfoBean getRateFileInfo() { + return rateFileInfo; + } + + public void setRateFileInfo(RateFileInfoBean rateFileInfo) { + this.rateFileInfo = rateFileInfo; + } + + public int getIsFavorite() { + return isFavorite; + } + + public void setIsFavorite(int isFavorite) { + this.isFavorite = isFavorite; + } + + public int getIsVip() { + return isVip; + } + + public void setIsVip(int isVip) { + this.isVip = isVip; + } + + public int getIsPaid() { + return isPaid; + } + + public void setIsPaid(int isPaid) { + this.isPaid = isPaid; + } + + public int getPay_model() { + return pay_model; + } + + public void setPay_model(int pay_model) { + this.pay_model = pay_model; + } + + public TrailAudioInfoBean getTrail_audio_info() { + return trail_audio_info; + } + + public void setTrail_audio_info(TrailAudioInfoBean trail_audio_info) { + this.trail_audio_info = trail_audio_info; + } + + public List getArtist() { + return artist; + } + + public void setArtist(List artist) { + this.artist = artist; + } + + public List getAllRate() { + return allRate; + } + + public void setAllRate(List allRate) { + this.allRate = allRate; + } + + public List getBizList() { + return bizList; + } + + public void setBizList(List bizList) { + this.bizList = bizList; + } + + public static class RateFileInfoBean { + /** + * 64 : {"size":1949031,"format":"aac"} + * 320 : {"size":9800017,"format":"mp3"} + * 128 : {"size":4037879,"format":"mp3"} + */ + + @SerializedName("64") + private _$64Bean _$64; + @SerializedName("320") + private _$320Bean _$320; + @SerializedName("128") + private _$128Bean _$128; + + public _$64Bean get_$64() { + return _$64; + } + + public void set_$64(_$64Bean _$64) { + this._$64 = _$64; + } + + public _$320Bean get_$320() { + return _$320; + } + + public void set_$320(_$320Bean _$320) { + this._$320 = _$320; + } + + public _$128Bean get_$128() { + return _$128; + } + + public void set_$128(_$128Bean _$128) { + this._$128 = _$128; + } + + public static class _$64Bean { + /** + * size : 1949031 + * format : aac + */ + + private int size; + private String format; + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + } + + public static class _$320Bean { + /** + * size : 9800017 + * format : mp3 + */ + + private int size; + private String format; + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + } + + public static class _$128Bean { + /** + * size : 4037879 + * format : mp3 + */ + + private int size; + private String format; + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + } + } + + public static class TrailAudioInfoBean { + /** + * duration : 30 + * start_time : 0 + * path : http://audio04.dmhmusic.com/71_53_T10056548808_128_4_4_0_sdk-cpm/cn/0412/M00/77/F9/ChAKEl-GWoOAZs0KAAdYO6LBmjM588.mp3?xcode=fd2bbe314e1442d1bdcea3346476bba2b4ff7c8 + * rate : 128 + * expireTime : 1682227221 + */ + + private String duration; + private String start_time; + private String path; + private int rate; + private int expireTime; + + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } + + public String getStart_time() { + return start_time; + } + + public void setStart_time(String start_time) { + this.start_time = start_time; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public int getRate() { + return rate; + } + + public void setRate(int rate) { + this.rate = rate; + } + + public int getExpireTime() { + return expireTime; + } + + public void setExpireTime(int expireTime) { + this.expireTime = expireTime; + } + } + + public static class ArtistBean { + /** + * artistCode : A10303625 + * gender : 未知 + * name : 岳佳 + * artistType : 38 + * artistTypeName : 歌手 + * pic : + * region : + */ + + private String artistCode; + private String gender; + private String name; + private int artistType; + private String artistTypeName; + private String pic; + private String region; + + public String getArtistCode() { + return artistCode; + } + + public void setArtistCode(String artistCode) { + this.artistCode = artistCode; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getArtistType() { + return artistType; + } + + public void setArtistType(int artistType) { + this.artistType = artistType; + } + + public String getArtistTypeName() { + return artistTypeName; + } + + public void setArtistTypeName(String artistTypeName) { + this.artistTypeName = artistTypeName; + } + + public String getPic() { + return pic; + } + + public void setPic(String pic) { + this.pic = pic; + } + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + this.region = region; + } + } + } + } +} diff --git a/src/main/java/com/zhangmeng/tools/utils/JksUtils.java b/src/main/java/com/zhangmeng/tools/utils/JksUtils.java new file mode 100644 index 0000000..672f859 --- /dev/null +++ b/src/main/java/com/zhangmeng/tools/utils/JksUtils.java @@ -0,0 +1,188 @@ +package com.zhangmeng.tools.utils; + + +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.util.encoders.Base64; +import org.bouncycastle.x509.X509V3CertificateGenerator; + +import javax.security.auth.x500.X500Principal; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.math.BigInteger; +import java.security.*; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.Date; +import java.util.Enumeration; + +/** + * @author : 芊芊墨客 + * @version : 1.0 + * @date : 2023-04-23 09:17 + */ +public class JksUtils { + + public static class GetCertFile { + + //证书颁发者 + static String CertificateIssuer = "C=中国,ST=广东,L=广州,O=人民组织,OU=人民单位,CN=人民颁发"; + //证书使用者 + static String CertificateUser = "C=中国,ST=广东,L=广州,O=人民组织,OU=人民单位,CN="; + + public static void main(String[] args) { + try { + X509Certificate cert = getCert(); + System.out.println(cert.toString()); + } catch (Exception e) { + e.printStackTrace(); + } + } + /* + * CN(Common Name名字与姓氏) + * OU(Organization Unit组织单位名称) + * O(Organization组织名称) + * ST(State州或省份名称) + * C(Country国家名称) + * L(Locality城市或区域名称) + * */ + public static X509Certificate getCert() throws Exception { + KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); + keyPairGenerator.initialize(1024); + KeyPair keyPair = keyPairGenerator.generateKeyPair(); + PublicKey publicKey = keyPair.getPublic(); + X509V3CertificateGenerator x509V3CertificateGenerator = new X509V3CertificateGenerator(); + //设置证书序列号 + x509V3CertificateGenerator.setSerialNumber(BigInteger.TEN); + //设置证书颁发者 + x509V3CertificateGenerator.setIssuerDN(new X500Principal(CertificateIssuer)); + //设置证书使用者 + x509V3CertificateGenerator.setSubjectDN(new X500Principal(CertificateUser + "sun")); + //设置证书有效期 + x509V3CertificateGenerator.setNotAfter(new Date(System.currentTimeMillis() + 1000 * 365 * 24 * 3600)); + x509V3CertificateGenerator.setNotBefore(new Date(System.currentTimeMillis())); + //设置证书签名算法 + x509V3CertificateGenerator.setSignatureAlgorithm("SHA1withRSA"); + + x509V3CertificateGenerator.setPublicKey(publicKey); + + //临时bc方法添加都环境变量 + Security.addProvider(new BouncyCastleProvider()); + X509Certificate x509Certificate = x509V3CertificateGenerator.generateX509Certificate(keyPair.getPrivate(), "BC"); + //写入文件 + FileOutputStream fos = new FileOutputStream("F:\\cer.cer"); + fos.write(x509Certificate.getEncoded()); + fos.flush(); + fos.close(); + return x509Certificate; + } + } + + public static class GetJksAndCerFile { + + public static void main(String[] args) { + buildKeyAndSaveToJksFile(); + exportCerFile(); + try { + readJks(); + readCer(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + public static void executeCommand(String[] arstringCommand) { + try { + Runtime.getRuntime().exec(arstringCommand); + + + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + + + //生成密钥并保存到jks文件 + public static void buildKeyAndSaveToJksFile() { + String[] command = new String[]{ + "cmd ", + "/k", + "start", // cmd Shell命令 + "keytool", "-genkeypair", //表示生成密钥 + "-alias", //要处理的条目的别名(jks文件别名) + "sun", + "-keyalg", //密钥算法名称(如 RSA DSA(默认是DSA)) + "RSA", + "-keysize",//密钥位大小(长度) + "1024", + "-sigalg", //签名算法名称 + "SHA1withRSA", + "-dname",// 唯一判别名,CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), + // ST=(州或省份名称), C=(单位的两字母国家代码)" + "CN=(张三), OU=(人民单位), O=(人民组织), L=(广州), ST=(广东), C=(中国)", + "-validity", // 有效天数 + "36500", + "-keypass",// 密钥口令(私钥的密码) + "123456", + "-keystore", //密钥库名称(jks文件路径) + "f:/demo.jks", + "-storepass", // 密钥库口令(jks文件的密码) + "123456", + "-v"// 详细输出(秘钥库中证书的详细信息) + }; + executeCommand(command); + } + + + //从jks文件中导出证书文件 + public static void exportCerFile() { + String[] command = new String[]{ + "cmd ", "/k", + "start", // cmd Shell命令 + + "keytool", + "-exportcert", // - export指定为导出操作 + "-alias", // -alias指定别名,这里是ss + "sun", + "-keystore", // -keystore指定keystore文件,这里是d:/demo.keystore + "f:/demo.jks", + "-rfc", + "-file",//-file指向导出路径 + "f:/demo.cer", + "-storepass",// 指定密钥库的密码 + "123456" + }; + executeCommand(command); + + } + + + //读取jks文件获取公、私钥 + public static void readJks() throws Exception { + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(new FileInputStream("f:\\demo.jks"), "123456".toCharArray()); + Enumeration aliases = keyStore.aliases(); + String alias = null; + while (aliases.hasMoreElements()) { + alias = aliases.nextElement(); + } + System.out.println("jks文件别名是:" + alias); + PrivateKey key = (PrivateKey) keyStore.getKey(alias, "123456".toCharArray()); + System.out.println("jks文件中的私钥是:" + new String(Base64.encode(key.getEncoded()))); + Certificate certificate = keyStore.getCertificate(alias); + PublicKey publicKey = certificate.getPublicKey(); + System.out.println("jks文件中的公钥:" + new String(Base64.encode(publicKey.getEncoded()))); + } + + + //读取证书文件获取公钥 + public static void readCer() throws Exception { + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + Certificate certificate = + certificateFactory.generateCertificate(new FileInputStream("f:\\demo.cer")); + PublicKey publicKey = certificate.getPublicKey(); + System.out.println("证书中的公钥:" + new String(Base64.encode(publicKey.getEncoded()))); + } + } +} diff --git a/src/main/resources/fxml/music-download.fxml b/src/main/resources/fxml/music-download.fxml index ac0fd2b..9b112dc 100644 --- a/src/main/resources/fxml/music-download.fxml +++ b/src/main/resources/fxml/music-download.fxml @@ -5,38 +5,32 @@ - - + - + -