mirror of
https://git.um-react.app/um/um-react.git
synced 2025-11-28 11:33:02 +00:00
24 lines
707 B
TypeScript
24 lines
707 B
TypeScript
import {
|
|
ParseKugouHeaderPayload, ParseKugouHeaderResponse,
|
|
|
|
} from '~/decrypt-worker/types.ts';
|
|
import { KuGouHeader } from '@unlock-music/crypto';
|
|
|
|
export const workerParseKugouHeader = async ({ blobURI }: ParseKugouHeaderPayload): Promise<ParseKugouHeaderResponse> => {
|
|
const blob = await fetch(blobURI, { headers: { Range: 'bytes=0-1023' } }).then((r) => r.blob());
|
|
const arrayBuffer = await blob.arrayBuffer();
|
|
const buffer = new Uint8Array(arrayBuffer.slice(0, 0x400));
|
|
|
|
let kwm : KuGouHeader | undefined;
|
|
|
|
try {
|
|
kwm = new KuGouHeader(buffer);
|
|
const { version, audioHash } = kwm;
|
|
return { version, audioHash };
|
|
} catch {
|
|
return null;
|
|
} finally {
|
|
kwm?.free();
|
|
}
|
|
}
|