aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/UserLibraryController.cs
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2026-05-06 20:49:19 +0200
committerGitHub <noreply@github.com>2026-05-06 20:49:19 +0200
commit33ed52b8ee25e1fae4763a26337b838dc9782b26 (patch)
treeee68da202f604eef267254ea8c689965098b1c3e /Jellyfin.Api/Controllers/UserLibraryController.cs
parentaa96ff42e616ecf5638a8f1e2e8459b94513c528 (diff)
parentd1ab428476f961426841a0561036c59c3b93878e (diff)
Merge branch 'master' into feature/season-provider-id-from-path
Diffstat (limited to 'Jellyfin.Api/Controllers/UserLibraryController.cs')
-rw-r--r--Jellyfin.Api/Controllers/UserLibraryController.cs36
1 files changed, 23 insertions, 13 deletions
diff --git a/Jellyfin.Api/Controllers/UserLibraryController.cs b/Jellyfin.Api/Controllers/UserLibraryController.cs
index 3ba7cc3169..b908f92be6 100644
--- a/Jellyfin.Api/Controllers/UserLibraryController.cs
+++ b/Jellyfin.Api/Controllers/UserLibraryController.cs
@@ -564,25 +564,35 @@ public class UserLibraryController : BaseJellyfinApiController
},
dtoOptions);
- var dtos = list.Select(i =>
+ var resolvedItems = new BaseItem[list.Count];
+ var childCounts = new int[list.Count];
+ for (int i = 0; i < list.Count; i++)
{
- var item = i.Item2[0];
+ var tuple = list[i];
+ var item = tuple.Item2[0];
var childCount = 0;
- if (i.Item1 is not null && (i.Item2.Count > 1 || i.Item1 is MusicAlbum || i.Item1 is Series ))
+ if (tuple.Item1 is not null && (tuple.Item2.Count > 1 || tuple.Item1 is MusicAlbum || tuple.Item1 is Series))
{
- item = i.Item1;
- childCount = i.Item2.Count;
+ item = tuple.Item1;
+ childCount = tuple.Item2.Count;
}
- var dto = _dtoService.GetBaseItemDto(item, dtoOptions, user);
-
- dto.ChildCount = childCount;
+ resolvedItems[i] = item;
+ childCounts[i] = childCount;
+ }
- return dto;
- });
+ // Fetch DTOs without visibility check since we've already done that in GetLatestItems and restore child counts afterwards
+ var dtos = _dtoService.GetBaseItemDtos(resolvedItems, dtoOptions, user, skipVisibilityCheck: true);
+ for (int i = 0; i < dtos.Count; i++)
+ {
+ if (childCounts[i] > 0)
+ {
+ dtos[i].ChildCount = childCounts[i];
+ }
+ }
- return Ok(dtos);
+ return Ok(dtos.AsEnumerable());
}
/// <summary>
@@ -637,13 +647,13 @@ public class UserLibraryController : BaseJellyfinApiController
var hasMetadata = !string.IsNullOrWhiteSpace(item.Overview) && item.HasImage(ImageType.Primary);
var performFullRefresh = !hasMetadata && (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= 3;
- if (!hasMetadata)
+ if (performFullRefresh)
{
var options = new MetadataRefreshOptions(new DirectoryService(_fileSystem))
{
MetadataRefreshMode = MetadataRefreshMode.FullRefresh,
ImageRefreshMode = MetadataRefreshMode.FullRefresh,
- ForceSave = performFullRefresh
+ ForceSave = true
};
await item.RefreshMetadata(options, CancellationToken.None).ConfigureAwait(false);