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';