Add debug logging for Spotify playlist ChildCount updates

- Log when checking items for Spotify playlists
- Log cache lookups and file cache fallbacks
- Log successful ChildCount updates
- Log when no Spotify playlists found
- Helps diagnose why playlist counts might not be updating correctly
This commit is contained in:
2026-02-01 11:56:34 -05:00
parent f7f57e711c
commit f5124bdda2

View File

@@ -1864,6 +1864,7 @@ public class JellyfinController : ControllerBase
// Modify response if it contains Spotify playlists to update ChildCount // Modify response if it contains Spotify playlists to update ChildCount
if (_spotifySettings.Enabled && result.RootElement.TryGetProperty("Items", out var items)) if (_spotifySettings.Enabled && result.RootElement.TryGetProperty("Items", out var items))
{ {
_logger.LogInformation("Response has Items property, checking for Spotify playlists to update counts");
result = await UpdateSpotifyPlaylistCounts(result); result = await UpdateSpotifyPlaylistCounts(result);
} }
@@ -1896,6 +1897,8 @@ public class JellyfinController : ControllerBase
var modified = false; var modified = false;
var updatedItems = new List<Dictionary<string, object>>(); var updatedItems = new List<Dictionary<string, object>>();
_logger.LogInformation("Checking {Count} items for Spotify playlists", itemsArray.Count);
foreach (var item in itemsArray) foreach (var item in itemsArray)
{ {
var itemDict = JsonSerializer.Deserialize<Dictionary<string, object>>(item.GetRawText()); var itemDict = JsonSerializer.Deserialize<Dictionary<string, object>>(item.GetRawText());
@@ -1908,9 +1911,13 @@ public class JellyfinController : ControllerBase
if (item.TryGetProperty("Id", out var idProp)) if (item.TryGetProperty("Id", out var idProp))
{ {
var playlistId = idProp.GetString(); var playlistId = idProp.GetString();
_logger.LogDebug("Checking item with ID: {Id}", playlistId);
if (!string.IsNullOrEmpty(playlistId) && if (!string.IsNullOrEmpty(playlistId) &&
_spotifySettings.PlaylistIds.Any(id => id.Equals(playlistId, StringComparison.OrdinalIgnoreCase))) _spotifySettings.PlaylistIds.Any(id => id.Equals(playlistId, StringComparison.OrdinalIgnoreCase)))
{ {
_logger.LogInformation("Found Spotify playlist: {Id}", playlistId);
// This is a Spotify playlist - get the actual track count // This is a Spotify playlist - get the actual track count
var playlistIndex = _spotifySettings.PlaylistIds.FindIndex(id => var playlistIndex = _spotifySettings.PlaylistIds.FindIndex(id =>
id.Equals(playlistId, StringComparison.OrdinalIgnoreCase)); id.Equals(playlistId, StringComparison.OrdinalIgnoreCase));
@@ -1921,10 +1928,15 @@ public class JellyfinController : ControllerBase
var missingTracksKey = $"spotify:missing:{playlistName}"; var missingTracksKey = $"spotify:missing:{playlistName}";
var missingTracks = await _cache.GetAsync<List<allstarr.Models.Spotify.MissingTrack>>(missingTracksKey); var missingTracks = await _cache.GetAsync<List<allstarr.Models.Spotify.MissingTrack>>(missingTracksKey);
_logger.LogInformation("Cache lookup for {Key}: {Count} tracks",
missingTracksKey, missingTracks?.Count ?? 0);
// Fallback to file cache // Fallback to file cache
if (missingTracks == null || missingTracks.Count == 0) if (missingTracks == null || missingTracks.Count == 0)
{ {
_logger.LogInformation("Trying file cache for {Name}", playlistName);
missingTracks = await LoadMissingTracksFromFile(playlistName); missingTracks = await LoadMissingTracksFromFile(playlistName);
_logger.LogInformation("File cache result: {Count} tracks", missingTracks?.Count ?? 0);
} }
if (missingTracks != null && missingTracks.Count > 0) if (missingTracks != null && missingTracks.Count > 0)
@@ -1932,9 +1944,13 @@ public class JellyfinController : ControllerBase
// Update ChildCount to show the number of tracks we'll provide // Update ChildCount to show the number of tracks we'll provide
itemDict["ChildCount"] = missingTracks.Count; itemDict["ChildCount"] = missingTracks.Count;
modified = true; modified = true;
_logger.LogDebug("Updated ChildCount for Spotify playlist {Name} to {Count}", _logger.LogInformation("Updated ChildCount for Spotify playlist {Name} to {Count}",
playlistName, missingTracks.Count); playlistName, missingTracks.Count);
} }
else
{
_logger.LogWarning("No missing tracks found for {Name}", playlistName);
}
} }
} }
} }
@@ -1944,9 +1960,13 @@ public class JellyfinController : ControllerBase
if (!modified) if (!modified)
{ {
_logger.LogInformation("No Spotify playlists found to update");
return response; return response;
} }
_logger.LogInformation("Modified {Count} Spotify playlists, rebuilding response",
updatedItems.Count(i => i.ContainsKey("ChildCount")));
// Rebuild the response with updated items // Rebuild the response with updated items
var responseDict = JsonSerializer.Deserialize<Dictionary<string, object>>(response.RootElement.GetRawText()); var responseDict = JsonSerializer.Deserialize<Dictionary<string, object>>(response.RootElement.GetRawText());
if (responseDict != null) if (responseDict != null)