Fix MediaSources null array fields and add logging for artist albums

- Added MediaStreams, MediaAttachments, Formats as empty arrays instead of null
- Added RunTimeTicks field to MediaSources
- Added detailed logging to GetExternalChildItems to debug artist album issues
- This should fix 'type Null is not a subtype of type List<dynamic>' error
This commit is contained in:
2026-02-04 16:04:04 -05:00
parent 526a079368
commit b778b3d31e
2 changed files with 12 additions and 1 deletions

View File

@@ -598,9 +598,13 @@ public class JellyfinController : ControllerBase
{ {
var itemTypes = ParseItemTypes(includeItemTypes); var itemTypes = ParseItemTypes(includeItemTypes);
_logger.LogInformation("GetExternalChildItems: provider={Provider}, externalId={ExternalId}, itemTypes={ItemTypes}",
provider, externalId, string.Join(",", itemTypes ?? Array.Empty<string>()));
// Check if asking for audio (album tracks) // Check if asking for audio (album tracks)
if (itemTypes?.Contains("Audio") == true) if (itemTypes?.Contains("Audio") == true)
{ {
_logger.LogDebug("Fetching album tracks for {Provider}/{ExternalId}", provider, externalId);
var album = await _metadataService.GetAlbumAsync(provider, externalId); var album = await _metadataService.GetAlbumAsync(provider, externalId);
if (album == null) if (album == null)
{ {
@@ -611,9 +615,12 @@ public class JellyfinController : ControllerBase
} }
// Otherwise assume it's artist albums // Otherwise assume it's artist albums
_logger.LogDebug("Fetching artist albums for {Provider}/{ExternalId}", provider, externalId);
var albums = await _metadataService.GetArtistAlbumsAsync(provider, externalId); var albums = await _metadataService.GetArtistAlbumsAsync(provider, externalId);
var artist = await _metadataService.GetArtistAsync(provider, externalId); var artist = await _metadataService.GetArtistAsync(provider, externalId);
_logger.LogInformation("Found {Count} albums for artist {ArtistName}", albums.Count, artist?.Name ?? "unknown");
// Fill artist info // Fill artist info
if (artist != null) if (artist != null)
{ {

View File

@@ -326,7 +326,11 @@ public class JellyfinResponseBuilder
["RequiresClosing"] = false, ["RequiresClosing"] = false,
["RequiresLooping"] = false, ["RequiresLooping"] = false,
["SupportsProbing"] = true, ["SupportsProbing"] = true,
["ReadAtNativeFramerate"] = false ["ReadAtNativeFramerate"] = false,
["MediaStreams"] = new List<object>(), // Empty array instead of null
["MediaAttachments"] = new List<object>(), // Empty array instead of null
["Formats"] = new List<object>(), // Empty array instead of null
["RunTimeTicks"] = (song.Duration ?? 180) * 10000000L // Duration in ticks (100ns units)
} }
}; };
} }