diff --git a/src/main/java/com/zhangmeng/tools/controller/MusicDownloadController.java b/src/main/java/com/zhangmeng/tools/controller/MusicDownloadController.java index c0baea8..08f8119 100644 --- a/src/main/java/com/zhangmeng/tools/controller/MusicDownloadController.java +++ b/src/main/java/com/zhangmeng/tools/controller/MusicDownloadController.java @@ -35,6 +35,7 @@ import org.springframework.http.HttpMethod; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; +import javax.script.ScriptEngineManager; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -150,8 +151,8 @@ public class MusicDownloadController { } public ObservableList get_ku_gou_info(String title){ + ScriptEngineManager manager = new ScriptEngineManager(); - URL.createObjectURL(new Blob()); String api = "https://songsearch.kugou.com/song_search_v2"; ObservableList list = FXCollections.observableArrayList(); diff --git a/src/main/resources/static/js/migu.js b/src/main/resources/static/js/migu.js new file mode 100644 index 0000000..d2412e1 --- /dev/null +++ b/src/main/resources/static/js/migu.js @@ -0,0 +1,137 @@ +/* eslint-disable consistent-return */ +/* eslint-disable no-unused-vars */ +/* eslint-disable no-use-before-define */ +/* global getParameterByName cookieRemove async forge */ +class migu { + + static search(url) { + const keyword = getParameterByName('keywords', url); + const curpage = getParameterByName('curpage', url); + const searchType = getParameterByName('type', url); + const sid = (this.uuid() + this.uuid()).replace(/-/g, ''); + // let type =''; + let searchSwitch = ''; + let target_url = + 'https://jadeite.migu.cn/music_search/v2/search/searchAll?'; + switch (searchType) { + case '0': + searchSwitch = '{"song":1}'; // {"song":1,"album":0,"singer":0,"tagSong":1,"mvSong":0,"bestShow":1,"songlist":0,"lyricSong":0} + // type = 2; + target_url = + `${target_url}sid=${sid}&isCorrect=1&isCopyright=1` + + `&searchSwitch=${encodeURIComponent(searchSwitch)}&pageSize=20` + + `&text=${encodeURIComponent(keyword)}&pageNo=${curpage}` + + '&feature=1000000000&sort=1'; + break; + case '1': + searchSwitch = '{"songlist":1}'; + // type = 6; + target_url = + `${target_url}sid=${sid}&isCorrect=1&isCopyright=1` + + `&searchSwitch=${encodeURIComponent(searchSwitch)}` + + '&userFilter=%7B%22songlisttag%22%3A%5B%5D%7D&pageSize=20' + + `&text=${encodeURIComponent(keyword)}&pageNo=${curpage}` + + // + `&sort=1&userSort=%7B%22songlist%22%3A%22default%22%7D`; + '&feature=0000000010&sort=1'; + break; + default: + break; + } + // const target_url = `https://pd.musicapp.migu.cn/MIGUM3.0/v1.0/content/search_all.do?&isCopyright=0&isCorrect=0&text=${keyword}&pageNo=${curpage}&searchSwitch=${searchSwitch}`; + // const target_url = `https://m.music.migu.cn/migu/remoting/scr_search_tag?rows=20&type=${type}&keyword=${keyword}'&pgc=${curpage}`; + + const deviceId = forge.md5 + .create() + .update(this.uuid().replace(/-/g, '')) + .digest() + .toHex() + .toLocaleUpperCase(); // 璁惧鐨刄UID + const timestamp = new Date().getTime(); + const signature_md5 = '6cdc72a439cef99a3418d2a78aa28c73'; // app绛惧悕璇佷功鐨刴d5 + const text = `${ + keyword + signature_md5 + }yyapp2d16148780a1dcc7408e06336b98cfd50${deviceId}${timestamp}`; + const sign = forge.md5 + .create(text) + .update(forge.util.encodeUtf8(text)) + .digest() + .toHex(); + const headers = { + // android_id: 'db2cd8c4cdc1345f', + appId: 'yyapp2', + // brand: 'google', + // channel: '0147151', + deviceId, + // HWID: '', + // IMEI: '', + // IMSI: '', + // ip: '192.168.1.101', + // mac: '02:00:00:00:00:00', + // 'mgm-Network-standard': '01', + // 'mgm-Network-type': '04', + // mode: 'android', + // msisdn: '', + // OAID: '', + // os: 'android 7.0', + // osVersion: 'android 7.0', + // platform: 'G011C', + sign, + timestamp, + // ua: 'Android_migu', + // uid: '', + uiVersion: 'A_music_3.3.0', + version: '7.0.4', + }; + return { + success: (fn) => { + axios + .get(target_url, { + headers, + }) + .then((response) => { + const { data } = response; + let result = []; + let total = 0; + if (searchType === '0') { + if (data.songResultData.result) { + result = data.songResultData.result.map((item) => + this.mg_convert_song(item) + ); + total = data.songResultData.totalCount; + } + } else if (searchType === '1') { + if (data.songListResultData.result) { + result = data.songListResultData.result.map((item) => ({ + // result = data.songLists.map(item => ({ + id: `mgplaylist_${item.id}`, + title: item.name, + source: 'migu', + source_url: `https://music.migu.cn/v3/music/playlist/${item.id}`, + // img_url: item.img, + img_url: item.musicListPicUrl, + url: `mgplaylist_${item.id}`, + author: item.userName, + count: item.musicNum, + })); + total = data.songListResultData.totalCount; + } + } + return fn({ + result, + total, + type: searchType, + }); + }); + }, + }; + } + + // https://abhishekdutta.org/blog/standalone_uuid_generator_in_javascript.html + static uuid() { + const temp_url = URL.createObjectURL(new Blob()); + const strTemp = temp_url.toString(); + URL.revokeObjectURL(temp_url); + return strTemp.substr(strTemp.lastIndexOf('/') + 1); // remove prefix (e.g. blob:null/, blob:www.test.com/, ...) + } + +}