From 826e21ecc85be03e15c4d2ad2f403ccb4dc2068e Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Fri, 27 Feb 2026 13:51:51 +0100 Subject: [PATCH] Fix LinkedAlternativeVersion validation --- Emby.Server.Implementations/Library/LibraryManager.cs | 9 +++++++++ MediaBrowser.Controller/Entities/Folder.cs | 7 ------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index ef3402089b..0ad63ef84a 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -456,6 +456,15 @@ namespace Emby.Server.Implementations.Library { // If deleting an alternate version, re-route references to its primary RerouteLinkedChildReferencesAsync(alternateVideo.Id, alternateVideo.PrimaryVersionId.Value).GetAwaiter().GetResult(); + + // Remove deleted alternate from primary's LinkedAlternateVersions + if (GetItemById(alternateVideo.PrimaryVersionId.Value) is Video primaryVideo) + { + primaryVideo.LinkedAlternateVersions = primaryVideo.LinkedAlternateVersions + .Where(lc => !lc.ItemId.HasValue || !lc.ItemId.Value.Equals(alternateVideo.Id)) + .ToArray(); + primaryVideo.UpdateToRepositoryAsync(ItemUpdateType.MetadataEdit, CancellationToken.None).GetAwaiter().GetResult(); + } } var children = item.IsFolder diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index dce5664672..cc322d0ddd 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -510,13 +510,6 @@ namespace MediaBrowser.Controller.Entities // Skip items that are alternate versions of another video if (item is Video video) { - // Check via PrimaryVersionId - if (video.PrimaryVersionId.HasValue) - { - Logger.LogDebug("Item is an alternate version (via PrimaryVersionId), skipping deletion: {Path}", item.Path ?? item.Name); - continue; - } - // Check if path is in LocalAlternateVersions of any valid child if (!string.IsNullOrEmpty(item.Path) && alternateVersionPaths.Contains(item.Path)) {