1
0
forked from um/web
web/src/decrypt/common.ts

81 lines
2.9 KiB
TypeScript
Raw Normal View History

import {Decrypt as NcmDecrypt} from "./ncm";
import {Decrypt as XmDecrypt} from "./xm";
import {Decrypt as QmcDecrypt} from "./qmc";
import {Decrypt as KgmDecrypt} from "./kgm";
import {Decrypt as KwmDecrypt} from "@/decrypt/kwm";
import {Decrypt as RawDecrypt} from "@/decrypt/raw";
import {Decrypt as TmDecrypt} from "@/decrypt/tm";
import {DecryptResult} from "@/decrypt/entity";
2020-01-21 11:03:41 +00:00
interface FileInfo {
status: string
name: string,
size: number,
percentage: number,
uid: number,
raw: File
}
2021-05-24 07:05:14 +00:00
export async function CommonDecrypt(file: FileInfo): Promise<DecryptResult> {
2020-01-21 11:03:41 +00:00
let raw_ext = file.name.substring(file.name.lastIndexOf(".") + 1, file.name.length).toLowerCase();
let raw_filename = file.name.substring(0, file.name.lastIndexOf("."));
2021-05-24 07:05:14 +00:00
let rt_data: DecryptResult;
2020-01-21 11:03:41 +00:00
switch (raw_ext) {
case "ncm":// Netease Mp3/Flac
rt_data = await NcmDecrypt(file.raw, raw_filename, raw_ext);
2020-01-21 11:03:41 +00:00
break;
2020-04-23 12:46:08 +00:00
case "kwm":// Kuwo Mp3/Flac
rt_data = await KwmDecrypt(file.raw, raw_filename, raw_ext);
2020-04-23 10:15:07 +00:00
break
2020-04-23 12:46:08 +00:00
case "xm": // Xiami Wav/M4a/Mp3/Flac
case "wav":// Xiami/Raw Wav
case "mp3":// Xiami/Raw Mp3
case "flac":// Xiami/Raw Flac
case "m4a":// Xiami/Raw M4a
rt_data = await XmDecrypt(file.raw, raw_filename, raw_ext);
2020-04-23 12:46:08 +00:00
break;
2020-01-27 09:36:20 +00:00
case "ogg":// Raw Ogg
rt_data = await RawDecrypt(file.raw, raw_filename, raw_ext);
2020-01-21 11:21:17 +00:00
break;
2020-01-21 11:03:41 +00:00
case "tm0":// QQ Music IOS Mp3
case "tm3":// QQ Music IOS Mp3
rt_data = await RawDecrypt(file.raw, raw_filename, "mp3");
2020-01-21 11:03:41 +00:00
break;
case "qmc3"://QQ Music Android Mp3
2020-04-04 17:01:59 +00:00
case "qmc2"://QQ Music Android Ogg
2020-01-21 11:03:41 +00:00
case "qmc0"://QQ Music Android Mp3
case "qmcflac"://QQ Music Android Flac
case "qmcogg"://QQ Music Android Ogg
2020-01-27 09:36:20 +00:00
case "tkm"://QQ Music Accompaniment M4a
2020-01-27 04:50:24 +00:00
case "bkcmp3"://Moo Music Mp3
case "bkcflac"://Moo Music Flac
2020-01-21 11:03:41 +00:00
case "mflac"://QQ Music Desktop Flac
case "mgg": //QQ Music Desktop Ogg
2020-09-19 04:00:58 +00:00
case "666c6163"://QQ Music Weiyun Flac
case "6d7033"://QQ Music Weiyun Mp3
case "6f6767"://QQ Music Weiyun Ogg
case "6d3461"://QQ Music Weiyun M4a
case "776176"://QQ Music Weiyun Wav
rt_data = await QmcDecrypt(file.raw, raw_filename, raw_ext);
2020-02-10 12:06:59 +00:00
break;
2020-01-27 09:36:20 +00:00
case "tm2":// QQ Music IOS M4a
case "tm6":// QQ Music IOS M4a
rt_data = await TmDecrypt(file.raw, raw_filename);
2020-01-21 11:03:41 +00:00
break;
2020-07-16 14:22:32 +00:00
case "vpr":
case "kgm":
case "kgma":
rt_data = await KgmDecrypt(file.raw, raw_filename, raw_ext);
2020-07-16 14:22:32 +00:00
break
2020-01-21 11:03:41 +00:00
default:
2021-05-24 07:05:14 +00:00
throw "不支持此文件格式"
2020-01-21 11:03:41 +00:00
}
2020-02-06 08:01:35 +00:00
2020-05-14 09:36:16 +00:00
if (!rt_data.rawExt) rt_data.rawExt = raw_ext;
if (!rt_data.rawFilename) rt_data.rawFilename = raw_filename;
console.log(rt_data);
2020-01-21 11:03:41 +00:00
return rt_data;
}