aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Library/Validators/StudiosValidator.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 /Emby.Server.Implementations/Library/Validators/StudiosValidator.cs
parent694db80d4c8e83ff381af56d2a3dde29e0855c3d (diff)
Optimize Validator and Filter Performance
Diffstat (limited to 'Emby.Server.Implementations/Library/Validators/StudiosValidator.cs')
-rw-r--r--Emby.Server.Implementations/Library/Validators/StudiosValidator.cs17
1 files changed, 16 insertions, 1 deletions
diff --git a/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs b/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs
index dd124feece..9fb6869171 100644
--- a/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs
+++ b/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs
@@ -55,6 +55,13 @@ public class StudiosValidator
IncludeItemTypes = [BaseItemKind.Studio]
}).ToHashSet();
+ var existingStudios = _libraryManager.GetItemList(new InternalItemsQuery
+ {
+ IncludeItemTypes = [BaseItemKind.Studio]
+ }).Cast<Studio>()
+ .GroupBy(s => s.Name, StringComparer.OrdinalIgnoreCase)
+ .ToDictionary(g => g.Key, g => g.First(), StringComparer.OrdinalIgnoreCase);
+
var numComplete = 0;
var count = names.Count;
var refreshed = 0;
@@ -63,7 +70,15 @@ public class StudiosValidator
{
try
{
- var item = _libraryManager.GetStudio(name);
+ Studio? item = null;
+ if (existingStudios.TryGetValue(name, out var existingStudio))
+ {
+ item = existingStudio;
+ }
+
+ // Fall back to GetStudio if not found (creates new item if needed)
+ item ??= _libraryManager.GetStudio(name);
+
if (!existingStudioIds.Contains(item.Id))
{
await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);