aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/FilterController.cs
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-01-31 19:19:26 +0100
committerShadowghost <Ghost_of_Stone@web.de>2026-01-31 19:22:04 +0100
commit2789532aa88ccc899ff8497537642e1d78b31ef5 (patch)
treebc50cc8b536c9487ddaa773f5a411fc2ddd17ac8 /Jellyfin.Api/Controllers/FilterController.cs
parent694db80d4c8e83ff381af56d2a3dde29e0855c3d (diff)
Optimize Validator and Filter Performance
Diffstat (limited to 'Jellyfin.Api/Controllers/FilterController.cs')
-rw-r--r--Jellyfin.Api/Controllers/FilterController.cs44
1 files changed, 9 insertions, 35 deletions
diff --git a/Jellyfin.Api/Controllers/FilterController.cs b/Jellyfin.Api/Controllers/FilterController.cs
index 3f9aa93a64..5ad127ad8c 100644
--- a/Jellyfin.Api/Controllers/FilterController.cs
+++ b/Jellyfin.Api/Controllers/FilterController.cs
@@ -68,53 +68,27 @@ public class FilterController : BaseJellyfinApiController
item = _libraryManager.GetParentItem(parentId, user?.Id);
}
- var query = new InternalItemsQuery
+ if (item is not Folder folder)
+ {
+ return new QueryFiltersLegacy();
+ }
+
+ var query = new InternalItemsQuery(user)
{
- User = user,
MediaTypes = mediaTypes,
IncludeItemTypes = includeItemTypes,
Recursive = true,
EnableTotalRecordCount = false,
+ AncestorIds = [folder.Id],
DtoOptions = new DtoOptions
{
- Fields = new[] { ItemFields.Genres, ItemFields.Tags },
+ Fields = [],
EnableImages = false,
EnableUserData = false
}
};
- if (item is not Folder folder)
- {
- return new QueryFiltersLegacy();
- }
-
- var itemList = folder.GetItemList(query);
- return new QueryFiltersLegacy
- {
- Years = itemList.Select(i => i.ProductionYear ?? -1)
- .Where(i => i > 0)
- .Distinct()
- .Order()
- .ToArray(),
-
- Genres = itemList.SelectMany(i => i.Genres)
- .DistinctNames()
- .Order()
- .ToArray(),
-
- Tags = itemList
- .SelectMany(i => i.Tags)
- .Distinct(StringComparer.OrdinalIgnoreCase)
- .Order()
- .ToArray(),
-
- OfficialRatings = itemList
- .Select(i => i.OfficialRating)
- .Where(i => !string.IsNullOrWhiteSpace(i))
- .Distinct(StringComparer.OrdinalIgnoreCase)
- .Order()
- .ToArray()
- };
+ return _libraryManager.GetQueryFiltersLegacy(query);
}
/// <summary>