|
@ -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); |
|
|
|
|
|
|
|
|