44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
const musicMetadata = require("music-metadata-browser");
|
|
export {Decrypt}
|
|
|
|
const audio_mime_type = {
|
|
mp3: "audio/mpeg",
|
|
flac: "audio/flac"
|
|
};
|
|
|
|
async function Decrypt(file) {
|
|
let tag = await musicMetadata.parseBlob(file);
|
|
let pic_url = "";
|
|
if (tag.common.picture !== undefined && tag.common.picture.length > 0) {
|
|
let pic = new Blob([tag.common.picture[0].data], {type: tag.common.picture[0].format});
|
|
pic_url = URL.createObjectURL(pic);
|
|
}
|
|
|
|
let file_url = URL.createObjectURL(file);
|
|
|
|
let filename_no_ext = file.name.substring(0, file.name.lastIndexOf("."));
|
|
let filename_array = filename_no_ext.split("-");
|
|
let filename_ext = file.name.substring(file.name.lastIndexOf(".") + 1, file.name.length).toLowerCase();
|
|
const mime = audio_mime_type[filename_ext];
|
|
let title = tag.common.title;
|
|
let artist = tag.common.artist;
|
|
|
|
if (filename_array.length > 1) {
|
|
if (artist === undefined) artist = filename_array[0].trim();
|
|
if (title === undefined) title = filename_array[1].trim();
|
|
} else if (filename_array.length === 1) {
|
|
if (title === undefined) title = filename_array[0].trim();
|
|
}
|
|
|
|
const filename = artist + " - " + title + "." + filename_ext;
|
|
return {
|
|
filename: filename,
|
|
title: title,
|
|
artist: artist,
|
|
album: tag.common.album,
|
|
picture: pic_url,
|
|
file: file_url,
|
|
mime: mime
|
|
}
|
|
}
|