UNPKG

taglib-wasm

Version:

TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps

69 lines (68 loc) 1.83 kB
import { withAudioFile, withAudioFileSave } from "./with-audio-file.js"; async function readPictures(file) { return withAudioFile(file, (audioFile) => audioFile.getPictures()); } async function applyPictures(file, pictures) { return withAudioFileSave(file, (audioFile) => { audioFile.setPictures(pictures); }); } async function addPicture(file, picture) { return withAudioFileSave(file, (audioFile) => { audioFile.addPicture(picture); }); } async function clearPictures(file) { return applyPictures(file, []); } async function readCoverArt(file) { const pictures = await readPictures(file); if (pictures.length === 0) { return void 0; } const frontCover = pictures.find((pic) => pic.type === "FrontCover"); if (frontCover) { return frontCover.data; } return pictures[0].data; } async function applyCoverArt(file, imageData, mimeType) { const picture = { mimeType, data: imageData, type: "FrontCover", description: "Front Cover" }; return applyPictures(file, [picture]); } function findPictureByType(pictures, type) { return pictures.find((pic) => pic.type === type); } async function replacePictureByType(file, newPicture) { const pictures = await readPictures(file); const filteredPictures = pictures.filter( (pic) => pic.type !== newPicture.type ); filteredPictures.push(newPicture); return applyPictures(file, filteredPictures); } async function readPictureMetadata(file) { const pictures = await readPictures(file); return pictures.map((pic) => ({ type: pic.type, mimeType: pic.mimeType, description: pic.description, size: pic.data.length })); } export { addPicture, applyCoverArt, applyPictures, clearPictures, findPictureByType, readCoverArt, readPictureMetadata, readPictures, replacePictureByType };