From cc580600ae5db9fe8eb55fd06b72da318e72851d Mon Sep 17 00:00:00 2001 From: J0Z1L Date: Sat, 28 Feb 2026 00:55:59 +0100 Subject: [PATCH] Fix Lidarr track indexing by querying tracks per albumId --- server.js | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/server.js b/server.js index 2439dde..698780f 100644 --- a/server.js +++ b/server.js @@ -128,7 +128,6 @@ function addTrackToLibraryIndex(track) { } async function rebuildLibraryIndex() { - const tracks = await lidarrRequest('get', '/api/v1/track'); const albums = await lidarrRequest('get', '/api/v1/album'); const byTitle = new Map(); const byAlbum = new Map(); @@ -137,8 +136,19 @@ async function rebuildLibraryIndex() { const prev = libraryIndexCache; libraryIndexCache = { byTitle, byAlbum, trackById, updatedAt: Date.now() }; - for (const track of tracks || []) { - addTrackToLibraryIndex(track); + let trackCount = 0; + for (const album of albums || []) { + if (!album?.id) continue; + let tracks = []; + try { + tracks = await lidarrRequest('get', '/api/v1/track', undefined, { albumId: album.id }); + } catch (_err) { + tracks = []; + } + for (const track of tracks || []) { + addTrackToLibraryIndex(track); + trackCount += 1; + } } for (const album of albums || []) { const k = buildAlbumKey(album.title || album.albumTitle || '', album.artistName || album.artist?.artistName || ''); @@ -146,11 +156,11 @@ async function rebuildLibraryIndex() { } // Keep previous cache if rebuild produced nothing unexpectedly. - if ((tracks || []).length === 0 && prev.updatedAt > 0) { + if (trackCount === 0 && prev.updatedAt > 0) { libraryIndexCache = prev; } return { - trackCount: (tracks || []).length, + trackCount, albumCount: (albums || []).length, updatedAt: libraryIndexCache.updatedAt }; @@ -159,7 +169,11 @@ async function rebuildLibraryIndex() { async function ensureLibraryIndexFresh(maxAgeMs = 5 * 60 * 1000) { const age = Date.now() - (libraryIndexCache.updatedAt || 0); if (!libraryIndexCache.updatedAt || age > maxAgeMs) { - await rebuildLibraryIndex(); + try { + await rebuildLibraryIndex(); + } catch (err) { + console.warn('Library index rebuild fehlgeschlagen:', err.message); + } } }