From df8cde6f54d436c602a872902ac44485a0ec7e88 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Thu, 7 Jul 2022 07:51:38 +0700 Subject: [PATCH] revert mxm back to local --- src/renderer/main/vueapp.js | 89 ++++++++++++++++--- .../views/components/settings-window.ejs | 20 +++-- src/renderer/views/pages/settings.ejs | 20 +++-- 3 files changed, 97 insertions(+), 32 deletions(-) diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index 0879c25e..7dfd7953 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -3065,13 +3065,67 @@ const app = new Vue({ return Math.random().toString(36).replace(/[^a-z]+/g, '').slice(2, 10); } + /* get token */ + function getToken(mode, track, artist, songid, lang, time, id) { + if (attempt > 2) { + app.loadNeteaseLyrics(); + // app.loadAMLyrics(); + } else { + attempt = attempt + 1; + let url = "https://apic-desktop.musixmatch.com/ws/1.1/token.get?app_id=web-desktop-app-v1.0&t=" + revisedRandId(); + let req = new XMLHttpRequest(); + req.overrideMimeType("application/json"); + req.open('GET', url, true); + req.setRequestHeader("authority", "apic-desktop.musixmatch.com"); + req.onload = function () { + try { + let jsonResponse = JSON.parse(this.responseText); + let status2 = jsonResponse["message"]["header"]["status_code"]; + if (status2 == 200) { + let token = jsonResponse["message"]["body"]["user_token"] ?? ''; + if (token != "" && token != "UpgradeOnlyUpgradeOnlyUpgradeOnlyUpgradeOnly") { + console.debug('200 token', mode); + // token good + app.mxmtoken = token; - function getMXMSubs(track, artist, lang, time, id) { - let richsyncQuery = app.cfg.lyrics.mxm_karaoke - let itunesid = (id && id != "") ? id : ''; // Mode 1 -> Subs - let url = "https://api.cider.sh/v1/lyrics?" + "mode=1" + "&richsyncQuery=" + richsyncQuery + "&track=" + track + "&artist=" + artist + "&songID=" + itunesid + "&source=mxm" + "&lang=" + lang + "&time=" + time; + if (mode == 1) { + getMXMSubs(track, artist, app.mxmtoken, lang, time, id); + } else { + getMXMTrans(songid, lang, app.mxmtoken); + } + } else { + console.debug('fake 200 token'); + getToken(mode, track, artist, songid, lang, time) + } + } else { + // console.log('token 4xx'); + getToken(mode, track, artist, songid, lang, time) + } + } catch (e) { + console.log('error'); + app.loadQQLyrics(); + //app.loadAMLyrics(); + } + }; + req.onerror = function () { + console.log('error'); + app.loadQQLyrics(); + // app.loadAMLyrics(); + }; + req.send(); + } + } + + function getMXMSubs(track, artist, token, lang, time, id) { + let usertoken = encodeURIComponent(token); + let richsyncQuery = (app.cfg.lyrics.mxm_karaoke) ? "&optional_calls=track.richsync" : "" + let timecustom = (!time || (time && time < 0)) ? '' : `&f_subtitle_length=${time}&q_duration=${time}&f_subtitle_length_max_deviation=40`; + let itunesid = (id && id != "") ? `&track_itunes_id=${id}` : ''; + let url = "https://apic-desktop.musixmatch.com/ws/1.1/macro.subtitles.get?format=json&namespace=lyrics_richsynched" + richsyncQuery + "&subtitle_format=lrc&q_artist=" + artist + "&q_track=" + track + itunesid + "&usertoken=" + usertoken + timecustom + "&app_id=web-desktop-app-v1.0&t=" + revisedRandId(); let req = new XMLHttpRequest(); req.overrideMimeType("application/json"); + req.open('GET', url, true); + req.setRequestHeader("authority", "apic-desktop.musixmatch.com"); req.onload = function () { try { let jsonResponse = JSON.parse(this.responseText); @@ -3098,7 +3152,7 @@ const app = new Vue({ // app.loadAMLyrics() } else { if (richsync == [] || richsync.length == 0) { - console.log("musixmatch worki"); + console.log("ok"); // process lrcfile to json here app.lyricsMediaItem = lrcfile let u = app.lyricsMediaItem.split(/[\r\n]/); @@ -3141,7 +3195,7 @@ const app = new Vue({ } if (lrcfile != null && lrcfile != '') { // load translation - getMXMTrans(id, lang); + getMXMTrans(id, lang, token); } else { // app.loadAMLyrics() app.loadQQLyrics(); @@ -3152,7 +3206,9 @@ const app = new Vue({ app.loadQQLyrics(); // app.loadAMLyrics() } - } + } else { //4xx rejected + getToken(1, track, artist, '', lang, time); + } } catch (e) { console.error(e); app.loadQQLyrics(); @@ -3164,22 +3220,23 @@ const app = new Vue({ console.log('error'); // app.loadAMLyrics(); }; - req.open('POST', url, true); req.send(); } - function getMXMTrans(id, lang) { - if (lang != "disabled" && id != '') { // Mode 2 -> Trans - let url2 = "https://api.cider.sh/v1/lyrics?" + "mode=2" + "&richsyncQuery=" + richsyncQuery + "&track=" + track + "&artist=" + artist + "&songID=" + itunesid + "&source=mxm" + "&lang=" + lang + "&time=" + time; + function getMXMTrans(id, lang, token) { + if (lang != "disabled" && id != '') { + let usertoken = encodeURIComponent(token); + let url2 = "https://apic-desktop.musixmatch.com/ws/1.1/crowd.track.translations.get?translation_fields_set=minimal&selected_language=" + lang + "&track_id=" + id + "&comment_format=text&part=user&format=json&usertoken=" + usertoken + "&app_id=web-desktop-app-v1.0&t=" + revisedRandId(); let req2 = new XMLHttpRequest(); req2.overrideMimeType("application/json"); - req2.open('POST', url2, true); + req2.open('GET', url2, true); + req2.setRequestHeader("authority", "apic-desktop.musixmatch.com"); req2.onload = function () { try { let jsonResponse2 = JSON.parse(this.responseText); console.log(jsonResponse2); let status2 = jsonResponse2["message"]["header"]["status_code"]; - if (status2 === 200) { + if (status2 == 200) { try { let preTrans = [] let u = app.lyrics; @@ -3211,7 +3268,11 @@ const app = new Vue({ } if (track != "" & track != "No Title Found") { - getMXMSubs(track, artist, lang, time, id) + if (app.mxmtoken != null && app.mxmtoken != '') { + getMXMSubs(track, artist, app.mxmtoken, lang, time, id) + } else { + getToken(1, track, artist, '', lang, time); + } } }, loadNeteaseLyrics() { diff --git a/src/renderer/views/components/settings-window.ejs b/src/renderer/views/components/settings-window.ejs index 9b8a0f1e..8f051f1b 100644 --- a/src/renderer/views/components/settings-window.ejs +++ b/src/renderer/views/components/settings-window.ejs @@ -709,15 +709,17 @@ {{$root.getLz('settings.header.lyrics')}}
-
-
- {{$root.getLz('settings.option.lyrics.enableMusixmatch')}} -
-
- - +
+
+
+ {{$root.getLz('settings.option.lyrics.enableMusixmatch')}} +
+
+ + +
diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 0db48612..0b9fcbe8 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -614,15 +614,17 @@ {{$root.getLz('settings.header.lyrics')}}
-
-
- {{$root.getLz('settings.option.lyrics.enableMusixmatch')}} -
-
- - +
+
+
+ {{$root.getLz('settings.option.lyrics.enableMusixmatch')}} +
+
+ + +