From e36e685bee2c49c0787c2988971135fe18d84524 Mon Sep 17 00:00:00 2001 From: Josh Patra Date: Fri, 6 Feb 2026 00:58:13 -0500 Subject: [PATCH] Fix lyrics cache key mismatch between prefetch and lookup Use same artist format (comma-separated) in prefetch as LrclibService to ensure cached lyrics are found during playback --- allstarr/Services/Lyrics/LyricsPrefetchService.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/allstarr/Services/Lyrics/LyricsPrefetchService.cs b/allstarr/Services/Lyrics/LyricsPrefetchService.cs index 1ae1eb3..4045857 100644 --- a/allstarr/Services/Lyrics/LyricsPrefetchService.cs +++ b/allstarr/Services/Lyrics/LyricsPrefetchService.cs @@ -135,7 +135,9 @@ public class LyricsPrefetchService : BackgroundService try { // Check if lyrics are already cached - var cacheKey = $"lyrics:{track.PrimaryArtist}:{track.Title}:{track.Album}:{track.DurationMs / 1000}"; + // Use same cache key format as LrclibService: join all artists with ", " + var artistName = string.Join(", ", track.Artists); + var cacheKey = $"lyrics:{artistName}:{track.Title}:{track.Album}:{track.DurationMs / 1000}"; var existingLyrics = await _cache.GetStringAsync(cacheKey); if (!string.IsNullOrEmpty(existingLyrics)) @@ -154,7 +156,8 @@ public class LyricsPrefetchService : BackgroundService track.PrimaryArtist, track.Title); // Remove any previously cached LRCLib lyrics for this track - await RemoveCachedLyricsAsync(track.PrimaryArtist, track.Title, track.Album, track.DurationMs / 1000); + var artistNameForRemoval = string.Join(", ", track.Artists); + await RemoveCachedLyricsAsync(artistNameForRemoval, track.Title, track.Album, track.DurationMs / 1000); continue; } @@ -172,7 +175,8 @@ public class LyricsPrefetchService : BackgroundService track.PrimaryArtist, track.Title, !string.IsNullOrEmpty(lyrics.SyncedLyrics)); // Save to file cache - await SaveLyricsToFileAsync(track.PrimaryArtist, track.Title, track.Album, track.DurationMs / 1000, lyrics); + var artistNameForSave = string.Join(", ", track.Artists); + await SaveLyricsToFileAsync(artistNameForSave, track.Title, track.Album, track.DurationMs / 1000, lyrics); } else {