improve mxm accuracy , fix #102

This commit is contained in:
vapormusic 2022-01-10 17:39:19 +07:00
parent 139d9b1783
commit 405e65e9ee

View file

@ -2015,6 +2015,7 @@ const app = new Vue({
const track = encodeURIComponent((this.mk.nowPlayingItem != null) ? this.mk.nowPlayingItem.title ?? '' : ''); const track = encodeURIComponent((this.mk.nowPlayingItem != null) ? this.mk.nowPlayingItem.title ?? '' : '');
const artist = encodeURIComponent((this.mk.nowPlayingItem != null) ? this.mk.nowPlayingItem.artistName ?? '' : ''); const artist = encodeURIComponent((this.mk.nowPlayingItem != null) ? this.mk.nowPlayingItem.artistName ?? '' : '');
const time = encodeURIComponent((this.mk.nowPlayingItem != null) ? (Math.round((this.mk.nowPlayingItem.attributes["durationInMillis"] ?? -1000) / 1000) ?? -1) : -1); const time = encodeURIComponent((this.mk.nowPlayingItem != null) ? (Math.round((this.mk.nowPlayingItem.attributes["durationInMillis"] ?? -1000) / 1000) ?? -1) : -1);
const id = encodeURIComponent((this.mk.nowPlayingItem != null) ? app.mk.nowPlayingItem._songId ?? '' : '');
let lrcfile = ""; let lrcfile = "";
let richsync = []; let richsync = [];
const lang = app.cfg.lyrics.mxm_language // translation language const lang = app.cfg.lyrics.mxm_language // translation language
@ -2023,7 +2024,7 @@ const app = new Vue({
} }
/* get token */ /* get token */
function getToken(mode, track, artist, songid, lang, time) { function getToken(mode, track, artist, songid, lang, time, id) {
if (attempt > 2) { if (attempt > 2) {
app.loadAMLyrics(); app.loadAMLyrics();
} else { } else {
@ -2044,7 +2045,7 @@ const app = new Vue({
app.mxmtoken = token; app.mxmtoken = token;
if (mode == 1) { if (mode == 1) {
getMXMSubs(track, artist, app.mxmtoken, lang, time); getMXMSubs(track, artist, app.mxmtoken, lang, time, id);
} else { } else {
getMXMTrans(songid, lang, app.mxmtoken); getMXMTrans(songid, lang, app.mxmtoken);
} }
@ -2066,11 +2067,12 @@ const app = new Vue({
} }
} }
function getMXMSubs(track, artist, token, lang, time) { function getMXMSubs(track, artist, token, lang, time, id) {
let usertoken = encodeURIComponent(token); let usertoken = encodeURIComponent(token);
let richsyncQuery = (app.cfg.lyrics.mxm_karaoke) ? "&optional_calls=track.richsync" : "" 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 timecustom = (!time || (time && time < 0)) ? '' : `&f_subtitle_length=${time}&q_duration=${time}&f_subtitle_length_max_deviation=40`;
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 + "&usertoken=" + usertoken + timecustom + "&app_id=web-desktop-app-v1.0&t=" + revisedRandId(); 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(); let req = new XMLHttpRequest();
req.overrideMimeType("application/json"); req.overrideMimeType("application/json");
req.open('GET', url, true); req.open('GET', url, true);
@ -2201,7 +2203,7 @@ const app = new Vue({
if (track != "" & track != "No Title Found") { if (track != "" & track != "No Title Found") {
if (app.mxmtoken != null && app.mxmtoken != '') { if (app.mxmtoken != null && app.mxmtoken != '') {
getMXMSubs(track, artist, app.mxmtoken, lang, time) getMXMSubs(track, artist, app.mxmtoken, lang, time, id)
} else { } else {
getToken(1, track, artist, '', lang, time); getToken(1, track, artist, '', lang, time);
} }