From 13f2d86df478bbab1fa6fc889f5d7156792d8b7d Mon Sep 17 00:00:00 2001 From: Jixun Wu Date: Tue, 21 Dec 2021 22:34:36 +0000 Subject: [PATCH] feat(joox): re-use QM meta extraction code (cherry picked from commit 2e946e6e30e02085018e868b7857acb62a1a0b08) --- src/decrypt/joox.ts | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/decrypt/joox.ts b/src/decrypt/joox.ts index 60e4da9..ce38a37 100644 --- a/src/decrypt/joox.ts +++ b/src/decrypt/joox.ts @@ -1,9 +1,11 @@ +import jooxFactory from '@unlock-music/joox-crypto'; + import { DecryptResult } from './entity'; import { AudioMimeType, GetArrayBuffer, SniffAudioExt } from './utils'; -import jooxFactory from '@unlock-music/joox-crypto'; import { MergeUint8Array } from '@/utils/MergeUint8Array'; import { storage } from '@/utils/storage'; +import { extractQQMusicMeta } from '@/utils/qm_meta'; export async function Decrypt(file: Blob, raw_filename: string, raw_ext: string): Promise { const uuid = await storage.loadJooxUUID(''); @@ -20,15 +22,21 @@ export async function Decrypt(file: Blob, raw_filename: string, raw_ext: string) const musicDecoded = MergeUint8Array(decryptor.decryptFile(fileBuffer)); const ext = SniffAudioExt(musicDecoded); const mime = AudioMimeType[ext]; - const musicBlob = new Blob([musicDecoded], { type: mime }); + + const { album, artist, imgUrl, blob, title } = await extractQQMusicMeta( + new Blob([musicDecoded], { type: mime }), + raw_filename, + ext, + ); return { - title: raw_filename.replace(/\.[^\.]+$/, ''), - artist: '未知', - album: '未知', - file: URL.createObjectURL(musicBlob), - blob: musicBlob, - mime: mime, + title: title, + artist: artist, ext: ext, + album: album, + picture: imgUrl, + file: URL.createObjectURL(blob), + blob: blob, + mime: mime, }; }