diff --git a/public/app.js b/public/app.js index 1ba1940..f8a210e 100644 --- a/public/app.js +++ b/public/app.js @@ -13,6 +13,7 @@ const updateLibraryBtn = document.getElementById('updateLibraryBtn'); const updateFrontendBtn = document.getElementById('updateFrontendBtn'); let selectedAlbum = null; +let sendContext = null; const CLEANUP_KEY = 'cleanupExtras'; cleanupToggle.checked = localStorage.getItem(CLEANUP_KEY) === 'true'; @@ -56,7 +57,9 @@ function createAlbumCard(album, preselectedTrackNames = []) { `; - card.querySelector('button').addEventListener('click', () => openAlbumDialog(album.id, preselectedTrackNames)); + card.querySelector('button').addEventListener('click', () => + openAlbumDialog(album.id, preselectedTrackNames, { albumName: album.name, artistName: album.artist }) + ); return card; } @@ -74,7 +77,12 @@ function createTrackCard(track) { `; - card.querySelector('button').addEventListener('click', () => openAlbumDialog(track.albumId, [track.trackName])); + card.querySelector('button').addEventListener('click', () => + openAlbumDialog(track.albumId, [track.trackName], { + albumName: track.albumName, + artistName: track.albumArtist || track.artist + }) + ); return card; } @@ -113,7 +121,7 @@ function renderItems(type, items) { } } -async function openAlbumDialog(albumId, preselectedTrackNames = []) { +async function openAlbumDialog(albumId, preselectedTrackNames = [], context = null) { setStatus('Lade Albumdetails...'); try { @@ -121,6 +129,7 @@ async function openAlbumDialog(albumId, preselectedTrackNames = []) { const preselected = new Set(preselectedTrackNames || []); selectedAlbum = album; + sendContext = context; dialogTitle.textContent = album.name; dialogArtist.textContent = `Artist: ${album.artist}`; @@ -203,8 +212,8 @@ async function sendToLidarr(event) { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ - albumName: selectedAlbum.name, - artistName: selectedAlbum.artist, + albumName: sendContext?.albumName || selectedAlbum.name, + artistName: sendContext?.artistName || selectedAlbum.artist, selectedTrackNames, cleanupExtras: cleanupToggle.checked }) diff --git a/server.js b/server.js index 00d6cb2..3220f90 100644 --- a/server.js +++ b/server.js @@ -401,6 +401,7 @@ app.get('/api/spotify/search', async (req, res) => { artist: track.artists?.map((a) => a.name).join(', ') || 'Unbekannt', albumId: track.album?.id, albumName: track.album?.name || 'Unbekannt', + albumArtist: track.album?.artists?.[0]?.name || track.artists?.[0]?.name || 'Unbekannt', image: track.album?.images?.[1]?.url || track.album?.images?.[0]?.url || null })); }