diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs index 6b575fbad3..23a426ac58 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs @@ -3583,7 +3583,7 @@ public sealed class BaseItemRepository .Where(e => e.OwnerId == null); } } - else if (filter.OwnerIds.Length == 0 && filter.ExtraTypes.Length == 0) + else if (filter.OwnerIds.Length == 0 && filter.ExtraTypes.Length == 0 && !filter.IncludeOwnedItems) { // Exclude alternate versions from general queries. Alternate versions have // OwnerId set (pointing to their primary) but no ExtraType. diff --git a/Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs b/Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs index 0f55465e86..79a8f9577c 100644 --- a/Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs +++ b/Jellyfin.Server/Migrations/Routines/MoveTrickplayFiles.cs @@ -57,7 +57,8 @@ public class MoveTrickplayFiles : IMigrationRoutine MediaTypes = [MediaType.Video], SourceTypes = [SourceType.Library], IsVirtualItem = false, - IsFolder = false + IsFolder = false, + IncludeOwnedItems = true }; do diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 23fce3f368..53acaf123a 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -360,6 +360,12 @@ namespace MediaBrowser.Controller.Entities public bool? HasOwnerId { get; set; } + /// + /// Gets or sets a value indicating whether to include items with an OwnerId + /// (additional parts, alternate versions) that are normally excluded from general queries. + /// + public bool IncludeOwnedItems { get; set; } + public bool? Is4K { get; set; } public int? MaxHeight { get; set; } diff --git a/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs b/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs index 81dcbf893e..6ea05c6471 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs @@ -79,6 +79,7 @@ public class TrickplayImagesTask : IScheduledTask IsVirtualItem = false, IsFolder = false, Recursive = true, + IncludeOwnedItems = true, Limit = QueryPageLimit }; diff --git a/MediaBrowser.Providers/Trickplay/TrickplayMoveImagesTask.cs b/MediaBrowser.Providers/Trickplay/TrickplayMoveImagesTask.cs index c0b8a8c75c..03bb5ff397 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayMoveImagesTask.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayMoveImagesTask.cs @@ -70,7 +70,8 @@ public class TrickplayMoveImagesTask : IScheduledTask SourceTypes = [SourceType.Library], IsVirtualItem = false, IsFolder = false, - Recursive = true + Recursive = true, + IncludeOwnedItems = true }); var trickplayQuery = new InternalItemsQuery @@ -78,7 +79,8 @@ public class TrickplayMoveImagesTask : IScheduledTask MediaTypes = [MediaType.Video], SourceTypes = [SourceType.Library], IsVirtualItem = false, - IsFolder = false + IsFolder = false, + IncludeOwnedItems = true }; do