From 3591ed71573036fc664395d4879b2f184041184b Mon Sep 17 00:00:00 2001 From: Samidy Date: Fri, 13 Mar 2026 04:51:04 +0300 Subject: [PATCH] fix(album-imports): get them to actually work --- js/app.js | 8 +++++--- js/playlist-importer.js | 11 ++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/js/app.js b/js/app.js index 742f33c..69c2079 100644 --- a/js/app.js +++ b/js/app.js @@ -1558,10 +1558,12 @@ document.addEventListener('DOMContentLoaded', async () => { importOptions ); - const hasMultipleTypes = - result.tracks.length > 0 && (result.albums.length > 0 || result.artists.length > 0); + const isLibraryImport = + result.albums.length > 0 || + result.artists.length > 0 || + Object.keys(result.playlists).length > 1; - if (hasMultipleTypes) { + if (isLibraryImport) { currentTrackElement.textContent = 'Adding to library...'; const importResults = await importToLibrary(result, db, (progress) => { diff --git a/js/playlist-importer.js b/js/playlist-importer.js index 89271f2..cb46b85 100644 --- a/js/playlist-importer.js +++ b/js/playlist-importer.js @@ -148,7 +148,9 @@ const HEADER_MAPPINGS = { }; function normalizeHeader(header) { + if (!header) return ''; return header + .replace(/^\uFEFF/, '') .toLowerCase() .trim() .replace(/[_\s]+/g, ' '); @@ -255,12 +257,19 @@ export async function parseDynamicCSV(csvText, api, onProgress, options = {}) { const typeValue = values[mappedHeaders.type]?.toLowerCase().trim(); if (typeValue === 'album' || typeValue === 'favorite album') return 'album'; if (typeValue === 'artist' || typeValue === 'favorite artist') return 'artist'; - if (typeValue === 'track' || typeValue === 'favorite' || typeValue === 'favorite track') return 'track'; + if ( + typeValue === 'track' || + typeValue === 'favorite' || + typeValue === 'favorite track' || + typeValue === 'playlist' + ) + return 'track'; } const hasTrackName = mappedHeaders.track !== undefined && values[mappedHeaders.track]; const hasArtistName = mappedHeaders.artist !== undefined && values[mappedHeaders.artist]; const hasAlbumName = mappedHeaders.album !== undefined && values[mappedHeaders.album]; + if (hasTrackName && hasAlbumName && values[mappedHeaders.track] === values[mappedHeaders.album]) return 'album'; if (hasTrackName && hasArtistName) return 'track'; if (hasAlbumName && hasArtistName && !hasTrackName) return 'album';