diff options
| author | Shadowghost <Ghost_of_Stone@web.de> | 2026-01-31 19:19:26 +0100 |
|---|---|---|
| committer | Shadowghost <Ghost_of_Stone@web.de> | 2026-01-31 19:22:04 +0100 |
| commit | 2789532aa88ccc899ff8497537642e1d78b31ef5 (patch) | |
| tree | bc50cc8b536c9487ddaa773f5a411fc2ddd17ac8 /Emby.Server.Implementations/Library/Validators/StudiosValidator.cs | |
| parent | 694db80d4c8e83ff381af56d2a3dde29e0855c3d (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.cs | 17 |
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); |
