aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/BoxSets
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/BoxSets')
-rw-r--r--MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs15
1 files changed, 13 insertions, 2 deletions
diff --git a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
index eccf8a606d..5f80151dd3 100644
--- a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
+++ b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Controller.Configuration;
@@ -69,8 +70,18 @@ public class BoxSetMetadataService : MetadataService<BoxSet, BoxSetInfo>
if (mergeMetadataSettings)
{
- // TODO: Change to only replace when currently empty or requested. This is currently not done because the metadata service is not handling attaching collection items based on the provider responses
- targetItem.LinkedChildren = sourceItem.LinkedChildren.Concat(targetItem.LinkedChildren).DistinctBy(i => i.Path).ToArray();
+ // Only merge LinkedChildren from metadata for external collections (not managed by Jellyfin).
+ // For internal collections, the database LinkedChildren table is the source of truth.
+ var targetPath = targetItem.Path;
+ if (!string.IsNullOrEmpty(targetPath)
+ && !FileSystem.ContainsSubPath(ServerConfigurationManager.ApplicationPaths.DataPath, targetPath))
+ {
+#pragma warning disable CS0618 // Type or member is obsolete - fallback for legacy path-based dedup
+ targetItem.LinkedChildren = sourceItem.LinkedChildren.Concat(targetItem.LinkedChildren)
+ .DistinctBy(i => i.ItemId.HasValue && !i.ItemId.Value.Equals(Guid.Empty) ? i.ItemId.Value.ToString() : i.Path ?? string.Empty)
+ .ToArray();
+#pragma warning restore CS0618
+ }
}
}