fix: add MIME type for the decrypted file

This commit is contained in:
awalol
2025-07-11 23:40:31 +08:00
parent 54f784d778
commit fbe8ef8ba1
3 changed files with 14 additions and 4 deletions

View File

@@ -24,3 +24,13 @@ export function isDataLooksLikeAudio(buffer: Uint8Array): boolean {
detectResult.free();
return ok;
}
export const AudioMimeType: { [key: string]: string } = {
mp3: 'audio/mpeg',
flac: 'audio/flac',
m4a: 'audio/mp4',
ogg: 'audio/ogg',
wma: 'audio/x-ms-wma',
wav: 'audio/x-wav',
dff: 'audio/x-dff',
};

View File

@@ -1,7 +1,7 @@
export const toArrayBuffer = async (src: Blob | ArrayBuffer | Uint8Array<ArrayBufferLike>) =>
src instanceof Blob ? await src.arrayBuffer() : src;
export const toBlob = (src: Blob | ArrayBuffer | Uint8Array<ArrayBufferLike>) =>
src instanceof Blob ? src : new Blob([src]);
export const toBlob = (src: Blob | ArrayBuffer | Uint8Array<ArrayBufferLike>, mimeType?: string) =>
src instanceof Blob ? src : new Blob([src], { type: mimeType ?? 'application/octet-stream' });
export function* chunkBuffer(buffer: Uint8Array, blockLen = 4096): Generator<[Uint8Array, number], void> {
const len = buffer.byteLength;

View File

@@ -6,7 +6,7 @@ import { DecipherFactory, DecipherInstance, Status } from '~/decrypt-worker/Deci
import { UnsupportedSourceFile } from '~/decrypt-worker/util/DecryptError.ts';
import { ready as umCryptoReady } from '@unlock-music/crypto';
import { go } from '~/util/go.ts';
import { detectAudioExtension } from '~/decrypt-worker/util/audioType.ts';
import { AudioMimeType, detectAudioExtension } from '~/decrypt-worker/util/audioType.ts';
class DecryptCommandHandler {
private readonly label: string;
@@ -75,7 +75,7 @@ class DecryptCommandHandler {
audioExt = 'm4a';
}
return { decrypted: URL.createObjectURL(toBlob(result.data)), ext: audioExt };
return { decrypted: URL.createObjectURL(toBlob(result.data, AudioMimeType[audioExt])), ext: audioExt };
}
}