From 31e9ff33857a4b44e6858e5fa8ada89d911cf043 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Tue, 17 Mar 2026 10:29:12 -0700 Subject: [PATCH] Fix Navidrome library scan triggering via Subsonic startScan endpoint trigger_library_scan and is_library_scanning were no-ops assuming Navidrome auto-detects new files. Navidrome supports startScan and getScanStatus via the Subsonic API, so use them like Plex and Jellyfin. --- core/navidrome_client.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/core/navidrome_client.py b/core/navidrome_client.py index 4f8a07eb..bd93b449 100644 --- a/core/navidrome_client.py +++ b/core/navidrome_client.py @@ -857,13 +857,28 @@ class NavidromeClient: return False def trigger_library_scan(self, library_name: str = "Music") -> bool: - """Trigger Navidrome library scan - Navidrome doesn't have scanning, always returns True""" - logger.info(f"🎵 Navidrome doesn't require library scans - library is always current") - return True + """Trigger Navidrome library scan via Subsonic startScan endpoint.""" + try: + result = self._make_request('startScan') + if result is not None: + logger.info("Navidrome library scan triggered") + return True + logger.warning("Navidrome startScan returned no response") + return False + except Exception as e: + logger.error(f"Failed to trigger Navidrome scan: {e}") + return False def is_library_scanning(self, library_name: str = "Music") -> bool: - """Check if Navidrome library is currently scanning - always returns False""" - return False + """Check if Navidrome library is currently scanning via Subsonic getScanStatus.""" + try: + result = self._make_request('getScanStatus') + if result is not None: + scan_status = result.get('scanStatus', {}) + return scan_status.get('scanning', False) + return False + except Exception: + return False # Metadata update methods for compatibility with metadata updater def update_artist_genres(self, artist, genres: List[str]):