From c5325a205b39db4688e77544394ae92c37d21f8a Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Thu, 7 Jul 2022 18:36:55 -0700 Subject: [PATCH 1/5] Bring back mxm lyrics (Fully tested) --- src/main/base/store.ts | 2 +- src/renderer/main/vueapp.js | 89 +++---------------- .../views/components/settings-window.ejs | 22 +++-- src/renderer/views/pages/settings.ejs | 32 ++++--- 4 files changed, 40 insertions(+), 105 deletions(-) diff --git a/src/main/base/store.ts b/src/main/base/store.ts index b57a0cfa..42289d72 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -243,7 +243,7 @@ export class Store { "maxContentScale": -1 // -1 default, anything else is a custom scale }, "lyrics": { - "enable_mxm": false, + "enable_mxm": true, "mxm_karaoke": false, "mxm_language": "en", "enable_qq": false, diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index 94bf49bf..269e3ee0 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -3065,67 +3065,13 @@ 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; - 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(); + 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; 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); @@ -3152,7 +3098,7 @@ const app = new Vue({ // app.loadAMLyrics() } else { if (richsync == [] || richsync.length == 0) { - console.log("ok"); + console.log("musixmatch worki"); // process lrcfile to json here app.lyricsMediaItem = lrcfile let u = app.lyricsMediaItem.split(/[\r\n]/); @@ -3195,7 +3141,7 @@ const app = new Vue({ } if (lrcfile != null && lrcfile != '') { // load translation - getMXMTrans(id, lang, token); + getMXMTrans(id, lang); } else { // app.loadAMLyrics() app.loadQQLyrics(); @@ -3206,9 +3152,7 @@ const app = new Vue({ app.loadQQLyrics(); // app.loadAMLyrics() } - } else { //4xx rejected - getToken(1, track, artist, '', lang, time); - } + } } catch (e) { console.error(e); app.loadQQLyrics(); @@ -3220,23 +3164,22 @@ const app = new Vue({ console.log('error'); // app.loadAMLyrics(); }; + req.open('POST', url, true); req.send(); } - 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(); + 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; let req2 = new XMLHttpRequest(); req2.overrideMimeType("application/json"); - req2.open('GET', url2, true); - req2.setRequestHeader("authority", "apic-desktop.musixmatch.com"); + req2.open('POST', url2, true); 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; @@ -3268,11 +3211,7 @@ const app = new Vue({ } if (track != "" & track != "No Title Found") { - if (app.mxmtoken != null && app.mxmtoken != '') { - getMXMSubs(track, artist, app.mxmtoken, lang, time, id) - } else { - getToken(1, track, artist, '', lang, time); - } + getMXMSubs(track, artist, lang, time, id) } }, loadNeteaseLyrics() { diff --git a/src/renderer/views/components/settings-window.ejs b/src/renderer/views/components/settings-window.ejs index 35745ee0..71788888 100644 --- a/src/renderer/views/components/settings-window.ejs +++ b/src/renderer/views/components/settings-window.ejs @@ -704,21 +704,19 @@ {{$root.getLz('settings.header.lyrics')}}
-
-
-
- {{$root.getLz('settings.option.lyrics.enableMusixmatch')}} -
-
- - -
+
+
+ {{$root.getLz('settings.option.lyrics.enableMusixmatch')}} +
+
+ +
- +
{{$root.getLz('settings.option.lyrics.enableMusixmatchKaraoke')}}
diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 0b9fcbe8..940ca2fc 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -613,31 +613,29 @@
{{$root.getLz('settings.header.lyrics')}}
-
-
-
-
- {{$root.getLz('settings.option.lyrics.enableMusixmatch')}} -
-
- - -
-
-
+
-
- {{$root.getLz('settings.option.lyrics.enableMusixmatchKaraoke')}} + {{$root.getLz('settings.option.lyrics.enableMusixmatch')}}
+
+
+
+
+ {{$root.getLz('settings.option.lyrics.enableMusixmatchKaraoke')}} +
+
+ +
+
{{$root.getLz('settings.option.lyrics.musixmatchPreferredLanguage')}} From c44ddebd88d5a01fb7915d7a4fd29e87b6c27410 Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Thu, 7 Jul 2022 18:43:39 -0700 Subject: [PATCH 2/5] fix mmx translation --- src/renderer/main/vueapp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index 269e3ee0..daae563e 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -3173,7 +3173,6 @@ const app = new Vue({ let url2 = "https://api.cider.sh/v1/lyrics?" + "mode=2" + "&richsyncQuery=" + richsyncQuery + "&track=" + track + "&artist=" + artist + "&songID=" + itunesid + "&source=mxm" + "&lang=" + lang + "&time=" + time; let req2 = new XMLHttpRequest(); req2.overrideMimeType("application/json"); - req2.open('POST', url2, true); req2.onload = function () { try { let jsonResponse2 = JSON.parse(this.responseText); @@ -3205,6 +3204,7 @@ const app = new Vue({ } catch (e) { } } + req2.open('POST', url2, true); req2.send(); } From 56ab11beca306be2c4b27361a12ac9c27f2c2b13 Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Thu, 7 Jul 2022 18:46:26 -0700 Subject: [PATCH 3/5] fix settings view --- src/renderer/views/pages/settings.ejs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 940ca2fc..b30be3aa 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -635,6 +635,7 @@
+
From 932a2e455af999d03b35e11192fe2b877f615121 Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Thu, 7 Jul 2022 19:47:56 -0700 Subject: [PATCH 4/5] remove useless args & nonexistent funcs --- src/renderer/main/vueapp.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index daae563e..4e0e2730 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -3168,9 +3168,9 @@ const app = new Vue({ req.send(); } - function getMXMTrans(id, lang) { + function getMXMTrans(lang, id) { 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; + let url2 = "https://api.cider.sh/v1/lyrics?" + "mode=2" + "&richsyncQuery=false" + "&songID=" + id + "&source=mxm" + "&lang=" + lang + "&time=" + time; let req2 = new XMLHttpRequest(); req2.overrideMimeType("application/json"); req2.onload = function () { @@ -3198,9 +3198,7 @@ const app = new Vue({ } catch (e) { /// not found trans -> ignore } - } else { //4xx rejected - getToken(2, '', '', id, lang, ''); - } + } } catch (e) { } } @@ -3212,6 +3210,7 @@ const app = new Vue({ if (track != "" & track != "No Title Found") { getMXMSubs(track, artist, lang, time, id) + getMXMTrans(track, artist, lang, time, id) } }, loadNeteaseLyrics() { @@ -3954,8 +3953,7 @@ const app = new Vue({ } try { // document.querySelector('.app-playback-controls .artwork').style.setProperty('--artwork', `url("${this.currentArtUrl}")`); - } catch (e) { - } + } catch (e) {} } else { let data = await this.mk.api.v3.music(`/v1/me/library/songs/${this.mk.nowPlayingItem.id}`); data = data.data.data[0]; From 948ec739dc01d3135390479683162b8149d93fb7 Mon Sep 17 00:00:00 2001 From: maikirakiwi Date: Thu, 7 Jul 2022 19:52:21 -0700 Subject: [PATCH 5/5] fix div hell --- src/renderer/views/components/settings-window.ejs | 5 ++--- src/renderer/views/pages/settings.ejs | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/renderer/views/components/settings-window.ejs b/src/renderer/views/components/settings-window.ejs index 71788888..36a98298 100644 --- a/src/renderer/views/components/settings-window.ejs +++ b/src/renderer/views/components/settings-window.ejs @@ -710,9 +710,8 @@
- + +
diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index b30be3aa..a167cb64 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -620,9 +620,8 @@
- + +