Ensure track selection sends its album and album artist to Lidarr

This commit is contained in:
J0Z1L 2026-02-28 00:18:59 +01:00
parent 77b0e6c119
commit 083dcbd992
2 changed files with 15 additions and 5 deletions

View file

@ -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 = []) {
</div>
`;
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) {
</div>
`;
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
})

View file

@ -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
}));
}