Просмотр исходного кода

Merge pull request #7767 from 1337joe/prefer-embedded-extras-titles

Bond-009 2 лет назад
Родитель
Сommit
8d8d0ee911

+ 17 - 20
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -1998,39 +1998,36 @@ 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)

+ 5 - 0
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);
         }
 

+ 8 - 2
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&lt;Folder&gt;.</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);
 

+ 2 - 0
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; }

+ 2 - 2
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;
                     }