diff --git a/js/app.js b/js/app.js index 2ffd530..01b655e 100644 --- a/js/app.js +++ b/js/app.js @@ -330,7 +330,18 @@ document.addEventListener('DOMContentLoaded', async () => { btn.innerHTML = 'Downloading...'; try { - const { playlist, tracks } = await api.getPlaylist(playlistId); + let playlist, tracks; + const userPlaylist = await db.getPlaylist(playlistId); + + if (userPlaylist) { + playlist = { ...userPlaylist, title: userPlaylist.name }; + tracks = userPlaylist.tracks || []; + } else { + const data = await api.getPlaylist(playlistId); + playlist = data.playlist; + tracks = data.tracks; + } + await downloadPlaylistAsZip(playlist, tracks, api, player.quality, lyricsManager); } catch (error) { console.error('Playlist download failed:', error); diff --git a/js/utils.js b/js/utils.js index ada9b5a..0aa6a95 100644 --- a/js/utils.js +++ b/js/utils.js @@ -71,9 +71,11 @@ export const buildTrackFilename = (track, quality) => { const template = localStorage.getItem('filename-template') || '{trackNumber} - {artist} - {title}'; const extension = getExtensionForQuality(quality); + const artistName = track.artist?.name || track.artists?.[0]?.name || 'Unknown Artist'; + const data = { trackNumber: track.trackNumber, - artist: track.artist?.name, + artist: artistName, title: getTrackTitle(track), album: track.album?.title }; diff --git a/styles.css b/styles.css index 8b96787..eba0121 100644 --- a/styles.css +++ b/styles.css @@ -3092,9 +3092,6 @@ input:checked + .slider::before { justify-self: flex-end; } -@media (max-width: 768px) { - /* ... existing generic rules ... */ - @media (max-width: 480px) { #playlist-detail-title { font-size: 1.75rem;