From c71cb8ee855280892dafe1b573c0d20921047f45 Mon Sep 17 00:00:00 2001 From: MengYX Date: Sat, 23 Nov 2019 18:30:59 +0800 Subject: [PATCH] Show Detail Info While Error Occurred --- src/App.vue | 11 +++++++---- src/plugins/mflac.js | 12 ++++++++++-- src/plugins/ncm.js | 32 +++++++++++++++----------------- src/plugins/qmc.js | 5 ++++- 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/App.vue b/src/App.vue index 885e022..7cc61a9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -140,10 +140,13 @@ data = await MFlacDecrypt.Decrypt(file.raw); break; default: - console.log("Not Supported File!"); + data = { + status: false, + message: "不支持此文件格式", + }; break; } - if (null != data) { + if (data.status) { this.tableData.push(data); this.$notify.success({ title: '解锁成功', @@ -160,8 +163,8 @@ window._paq.push(["trackEvent", "Unlock", "Success", JSON.stringify(_rp_data)]); } else { this.$notify.error({ - title: '错误', - message: '解析此文件时出现问题,请查看使用提示', + title: '出现问题', + message: data.message + ',参考使用提示', dangerouslyUseHTMLString: true }); window._paq.push(["trackEvent", "Unlock", "Error", file.name]); diff --git a/src/plugins/mflac.js b/src/plugins/mflac.js index 85c5ed7..fdc48e1 100644 --- a/src/plugins/mflac.js +++ b/src/plugins/mflac.js @@ -4,7 +4,10 @@ export {Decrypt} async function Decrypt(file) { // 获取扩展名 let filename_ext = file.name.substring(file.name.lastIndexOf(".") + 1, file.name.length).toLowerCase(); - if (filename_ext !== "mflac") return; + if (filename_ext !== "mflac") return { + status: false, + message: "File type is incorrect!", + }; // 读取文件 const fileBuffer = await new Promise(resolve => { const reader = new FileReader(); @@ -18,7 +21,10 @@ async function Decrypt(file) { // 转换数据 const seed = new Mask(); - if (!seed.DetectMask(audioData)) return; + if (!seed.DetectMask(audioData)) return{ + status: false, + message: "此音乐无法解锁,目前mflac格式不提供完整支持", + }; for (let cur = 0; cur < audioDataLen; ++cur) { audioData[cur] ^= seed.NextMask(); } @@ -51,6 +57,8 @@ async function Decrypt(file) { } // 返回*/ return { + status: true, + message: "", filename: filename, title: title, artist: artist, diff --git a/src/plugins/ncm.js b/src/plugins/ncm.js index 9139611..f213d3e 100644 --- a/src/plugins/ncm.js +++ b/src/plugins/ncm.js @@ -24,10 +24,10 @@ async function Decrypt(file) { if (dataView.getUint32(0, true) !== 0x4e455443 || dataView.getUint32(4, true) !== 0x4d414446 - ) { - console.log({type: "error", data: "not ncm file"}); - return; - } + ) return { + status: false, + message: "此ncm文件已损坏", + }; let offset = 10; @@ -50,14 +50,13 @@ async function Decrypt(file) { const result = new Uint8Array(plainText.sigBytes); - { - const words = plainText.words; - const sigBytes = plainText.sigBytes; - for (let i = 0; i < sigBytes; i++) { - result[i] = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - } + const words = plainText.words; + const sigBytes = plainText.sigBytes; + for (let i = 0; i < sigBytes; i++) { + result[i] = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; } + return result.slice(17); })(); @@ -130,13 +129,12 @@ async function Decrypt(file) { } if (musicMeta.format === undefined) { - musicMeta.format = (() => { - const [f, L, a, C] = audioData; - if (f === 0x66 && L === 0x4c && a === 0x61 && C === 0x43) { - return "flac"; - } - return "mp3"; - })(); + const [f, L, a, C] = audioData; + if (f === 0x66 && L === 0x4c && a === 0x61 && C === 0x43) { + musicMeta.format = "flac"; + } else { + musicMeta.format = "mp3"; + } } const mime = audio_mime_type[musicMeta.format]; diff --git a/src/plugins/qmc.js b/src/plugins/qmc.js index efe9102..ce48cac 100644 --- a/src/plugins/qmc.js +++ b/src/plugins/qmc.js @@ -31,7 +31,10 @@ async function Decrypt(file) { new_ext = "flac"; break; default: - return; + return { + status: false, + message: "File type is incorrect!", + }; } const mime = audio_mime_type[new_ext]; // 读取文件