From bbb0d9bb73c261863a1fa0feea7d2012e150fb75 Mon Sep 17 00:00:00 2001 From: Josh Patra Date: Tue, 3 Feb 2026 01:49:58 -0500 Subject: [PATCH] track count fix --- allstarr/Controllers/JellyfinController.cs | 41 +++++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/allstarr/Controllers/JellyfinController.cs b/allstarr/Controllers/JellyfinController.cs index 563dcad..2cd5a2e 100644 --- a/allstarr/Controllers/JellyfinController.cs +++ b/allstarr/Controllers/JellyfinController.cs @@ -2525,17 +2525,48 @@ public class JellyfinController : ControllerBase _logger.LogInformation("File cache result: {Count} tracks", missingTracks?.Count ?? 0); } + // Get local tracks count from Jellyfin + var localTracksCount = 0; + try + { + var (localTracksResponse, _) = await _proxyService.GetJsonAsync( + $"Playlists/{playlistId}/Items", + null, + Request.Headers); + + if (localTracksResponse != null && + localTracksResponse.RootElement.TryGetProperty("Items", out var localItems)) + { + localTracksCount = localItems.GetArrayLength(); + _logger.LogInformation("Found {Count} local tracks in Jellyfin playlist {Name}", + localTracksCount, playlistName); + } + } + catch (Exception ex) + { + _logger.LogWarning(ex, "Failed to get local tracks count for {Name}", playlistName); + } + if (missingTracks != null && missingTracks.Count > 0) { - // Update ChildCount to show the number of tracks we'll provide - itemDict["ChildCount"] = missingTracks.Count; + // Update ChildCount to show total tracks (local + external) + var totalCount = localTracksCount + missingTracks.Count; + itemDict["ChildCount"] = totalCount; modified = true; - _logger.LogInformation("✓ Updated ChildCount for Spotify playlist {Name} to {Count}", - playlistName, missingTracks.Count); + _logger.LogInformation("✓ Updated ChildCount for Spotify playlist {Name} to {Total} ({Local} local + {External} external)", + playlistName, totalCount, localTracksCount, missingTracks.Count); + } + else if (localTracksCount > 0) + { + // No external tracks, but we have local tracks + itemDict["ChildCount"] = localTracksCount; + modified = true; + _logger.LogInformation("✓ Updated ChildCount for Spotify playlist {Name} to {Count} (local only, no external tracks)", + playlistName, localTracksCount); } else { - _logger.LogWarning("No missing tracks found for {Name}", playlistName); + _logger.LogWarning("No tracks found for {Name} (neither local nor external)", playlistName); } } }