ソースを参照

Fix IsInMixedFolder not being set for Extras in mixed subfolders

Tobias Kloy 3 ヶ月 前
コミット
b108a8cfc5
1 ファイル変更6 行追加3 行削除
  1. 6 3
      Emby.Server.Implementations/Library/LibraryManager.cs

+ 6 - 3
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -2721,6 +2721,8 @@ namespace Emby.Server.Implementations.Library
                 if (current.IsDirectory && _namingOptions.AllExtrasTypesFolderNames.ContainsKey(current.Name))
                 if (current.IsDirectory && _namingOptions.AllExtrasTypesFolderNames.ContainsKey(current.Name))
                 {
                 {
                     var filesInSubFolder = _fileSystem.GetFiles(current.FullName, null, false, false);
                     var filesInSubFolder = _fileSystem.GetFiles(current.FullName, null, false, false);
+                    bool subFolderIsMixedFolder = filesInSubFolder.Count() > 1;
+
                     foreach (var file in filesInSubFolder)
                     foreach (var file in filesInSubFolder)
                     {
                     {
                         if (!_extraResolver.TryGetExtraTypeForOwner(file.FullName, ownerVideoInfo, out var extraType))
                         if (!_extraResolver.TryGetExtraTypeForOwner(file.FullName, ownerVideoInfo, out var extraType))
@@ -2728,7 +2730,7 @@ namespace Emby.Server.Implementations.Library
                             continue;
                             continue;
                         }
                         }
 
 
-                        var extra = GetExtra(file, extraType.Value);
+                        var extra = GetExtra(file, extraType.Value, subFolderIsMixedFolder);
                         if (extra is not null)
                         if (extra is not null)
                         {
                         {
                             yield return extra;
                             yield return extra;
@@ -2737,7 +2739,7 @@ namespace Emby.Server.Implementations.Library
                 }
                 }
                 else if (!current.IsDirectory && _extraResolver.TryGetExtraTypeForOwner(current.FullName, ownerVideoInfo, out var extraType))
                 else if (!current.IsDirectory && _extraResolver.TryGetExtraTypeForOwner(current.FullName, ownerVideoInfo, out var extraType))
                 {
                 {
-                    var extra = GetExtra(current, extraType.Value);
+                    var extra = GetExtra(current, extraType.Value, false);
                     if (extra is not null)
                     if (extra is not null)
                     {
                     {
                         yield return extra;
                         yield return extra;
@@ -2745,7 +2747,7 @@ namespace Emby.Server.Implementations.Library
                 }
                 }
             }
             }
 
 
-            BaseItem? GetExtra(FileSystemMetadata file, ExtraType extraType)
+            BaseItem? GetExtra(FileSystemMetadata file, ExtraType extraType, bool isInMixedFolder)
             {
             {
                 var extra = ResolvePath(_fileSystem.GetFileInfo(file.FullName), directoryService, _extraResolver.GetResolversForExtraType(extraType));
                 var extra = ResolvePath(_fileSystem.GetFileInfo(file.FullName), directoryService, _extraResolver.GetResolversForExtraType(extraType));
                 if (extra is not Video && extra is not Audio)
                 if (extra is not Video && extra is not Audio)
@@ -2768,6 +2770,7 @@ namespace Emby.Server.Implementations.Library
 
 
                 extra.ParentId = Guid.Empty;
                 extra.ParentId = Guid.Empty;
                 extra.OwnerId = owner.Id;
                 extra.OwnerId = owner.Id;
+                extra.IsInMixedFolder = isInMixedFolder;
                 return extra;
                 return extra;
             }
             }
         }
         }