Browse Source

Fix GBK Encoding Reading in QQMusic Mp3

20230320
MengYX 5 years ago
parent
commit
23b01d5f87
No known key found for this signature in database GPG Key ID: E63F9C7303E8F604
  1. 11
      src/decrypt/qmc.js

11
src/decrypt/qmc.js

@ -1,6 +1,8 @@
import {AudioMimeType, DetectAudioExt, GetArrayBuffer, GetFileInfo, GetMetaCoverURL, RequestJsonp} from "./util"; import {AudioMimeType, DetectAudioExt, GetArrayBuffer, GetFileInfo, GetMetaCoverURL, RequestJsonp} from "./util";
import {QmcMaskCreate58, QmcMaskDetectMflac, QmcMaskDetectMgg, QmcMaskGetDefault} from "./qmcMask"; import {QmcMaskCreate58, QmcMaskDetectMflac, QmcMaskDetectMgg, QmcMaskGetDefault} from "./qmcMask";
import {decode} from "iconv-lite"
const musicMetadata = require("music-metadata-browser"); const musicMetadata = require("music-metadata-browser");
const HandlerMap = { const HandlerMap = {
@ -40,8 +42,15 @@ export async function Decrypt(file, raw_filename, raw_ext) {
let musicBlob = new Blob([musicDecoded], {type: mime}); let musicBlob = new Blob([musicDecoded], {type: mime});
const musicMeta = await musicMetadata.parseBlob(musicBlob); const musicMeta = await musicMetadata.parseBlob(musicBlob);
let isGbk = musicMeta.native["ID3v2.3"]
.some(item => item.id === "TCON" && item.value === "(12)");
if (isGbk) {
musicMeta.common.artist = decode(musicMeta.common.artist, "gbk");
musicMeta.common.title = decode(musicMeta.common.title, "gbk");
musicMeta.common.album = decode(musicMeta.common.album, "gbk");
}
//todo: Use artists list to replace artist
const info = GetFileInfo(musicMeta.common.artist, musicMeta.common.title, raw_filename); const info = GetFileInfo(musicMeta.common.artist, musicMeta.common.title, raw_filename);
if (handler.detect) reportKeyUsage(keyData, seed.Matrix128, if (handler.detect) reportKeyUsage(keyData, seed.Matrix128,
info.artist, info.title, musicMeta.common.album, raw_filename, raw_ext); info.artist, info.title, musicMeta.common.album, raw_filename, raw_ext);

Loading…
Cancel
Save