diff options
5 files changed, 34 insertions, 24 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 4bbb391cca..bf12e4e0aa 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -1999,38 +1999,35 @@ namespace Emby.Server.Implementations.Library public List<Folder> GetCollectionFolders(BaseItem item) { + return GetCollectionFolders(item, GetUserRootFolder().Children.OfType<Folder>()); + } + + public List<Folder> GetCollectionFolders(BaseItem item, IEnumerable<Folder> allUserRootChildren) + { while (item is not null) { var parent = item.GetParent(); - if (parent is null || parent is AggregateFolder) + if (parent is AggregateFolder) { break; } - item = parent; - } - - if (item is null) - { - return new List<Folder>(); - } - - return GetCollectionFoldersInternal(item, GetUserRootFolder().Children.OfType<Folder>()); - } + if (parent is null) + { + var owner = item.GetOwner(); - public List<Folder> GetCollectionFolders(BaseItem item, List<Folder> allUserRootChildren) - { - while (item is not null) - { - var parent = item.GetParent(); + if (owner is null) + { + break; + } - if (parent is null || parent is AggregateFolder) + item = owner; + } + else { - break; + item = parent; } - - item = parent; } if (item is null) diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 32fe1b3b02..49dd151f36 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -2451,6 +2451,11 @@ namespace MediaBrowser.Controller.Entities return Task.FromResult(true); } + if (video.OwnerId.Equals(default)) + { + video.OwnerId = this.Id; + } + return RefreshMetadataForOwnedItem(video, copyTitleMetadata, newOptions, cancellationToken); } diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 5905c25a57..f34e3d68d9 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -429,10 +429,16 @@ namespace MediaBrowser.Controller.Library /// Gets the collection folders. /// </summary> /// <param name="item">The item.</param> - /// <returns>IEnumerable<Folder>.</returns> + /// <returns>The folders that contain the item.</returns> List<Folder> GetCollectionFolders(BaseItem item); - List<Folder> GetCollectionFolders(BaseItem item, List<Folder> allUserRootChildren); + /// <summary> + /// Gets the collection folders. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="allUserRootChildren">The root folders to consider.</param> + /// <returns>The folders that contain the item.</returns> + List<Folder> GetCollectionFolders(BaseItem item, IEnumerable<Folder> allUserRootChildren); LibraryOptions GetLibraryOptions(BaseItem item); diff --git a/MediaBrowser.Model/Configuration/LibraryOptions.cs b/MediaBrowser.Model/Configuration/LibraryOptions.cs index c4d313bdba..81f2f02bc5 100644 --- a/MediaBrowser.Model/Configuration/LibraryOptions.cs +++ b/MediaBrowser.Model/Configuration/LibraryOptions.cs @@ -45,6 +45,8 @@ namespace MediaBrowser.Model.Configuration public bool EnableEmbeddedTitles { get; set; } + public bool EnableEmbeddedExtrasTitles { get; set; } + public bool EnableEmbeddedEpisodeInfos { get; set; } public int AutomaticRefreshIntervalDays { get; set; } diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs index 58b23a36df..751135a2c8 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs @@ -484,8 +484,8 @@ namespace MediaBrowser.Providers.MediaInfo { if (!string.IsNullOrWhiteSpace(data.Name) && libraryOptions.EnableEmbeddedTitles) { - // Don't use the embedded name for extras because it will often be the same name as the movie - if (!video.ExtraType.HasValue) + // Separate option to use the embedded name for extras because it will often be the same name as the movie + if (!video.ExtraType.HasValue || libraryOptions.EnableEmbeddedExtrasTitles) { video.Name = data.Name; } |
