diff --git a/js/metadata.js b/js/metadata.js index 330aa30..0cb2aba 100644 --- a/js/metadata.js +++ b/js/metadata.js @@ -160,16 +160,25 @@ export async function readTrackMetadata(file, siblings = []) { if (data) { metadata.title = data.title || metadata.title; - metadata.artists.push( - ...(data.artist || '') - .split(';') - .map((a) => a.trim()) - .filter((a) => a) - ); - metadata.artist = data.artist || metadata.artist; + const artistNames = (data.artist || "") + .split(";") + .map((a) => a.trim()) + .filter((a) => a); + + if (artistNames.length > 0) { + metadata.artists = artistNames.map((name) => ({ name })); + metadata.artist = metadata.artists[0]; + } + metadata.album.title = data.albumTitle || metadata.album.title; metadata.album.releaseDate = data.releaseDate || metadata.album.releaseDate; + if (data.albumArtist) { + metadata.album.artist = { name: data.albumArtist }; + } else if (metadata.artist.name !== "Unknown Artist") { + metadata.album.artist = { name: metadata.artist.name }; + } + if (data.cover) { const blob = new Blob([data.cover.data], { type: data.cover.type }); metadata.album.cover = URL.createObjectURL(blob); @@ -184,10 +193,6 @@ export async function readTrackMetadata(file, siblings = []) { console.warn('Error reading metadata for', file.name, e); } - if (metadata.artists.length > 0) { - metadata.artist = metadata.artists[0]; - } - if (metadata.album.cover === 'assets/appicon.png' && siblings.length > 0) { const baseName = file.name.substring(0, file.name.lastIndexOf('.')); const imageExtensions = ['.jpg', '.jpeg', '.png', '.webp'];