Browse Source

Fix LocalTrailers playback.

SL1288 5 years ago
parent
commit
fdc24ec2ee

+ 1 - 1
Emby.Server.Implementations/Dto/DtoService.cs

@@ -1079,7 +1079,7 @@ namespace Emby.Server.Implementations.Dto
                     allExtras = item.GetExtras().ToArray();
                 }
 
-                dto.LocalTrailerCount = allExtras.Count(i => i.ExtraType.HasValue && i.ExtraType.Value == ExtraType.Trailer);
+                dto.LocalTrailerCount = allExtras.Count(i => i.ExtraType.HasValue && i.ExtraType.Value == ExtraType.Trailer) + item.GetTrailers().Count();
             }
 
             // Add EpisodeInfo

+ 6 - 4
MediaBrowser.Api/UserLibrary/UserLibraryService.cs

@@ -366,11 +366,13 @@ namespace MediaBrowser.Api.UserLibrary
 
             var dtoOptions = GetDtoOptions(_authContext, request);
 
-            var dtos = item.GetExtras(new[] { ExtraType.Trailer })
-                .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item))
-                .ToArray();
+            var dtosExtras = item.GetExtras(new[] { ExtraType.Trailer })
+                .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item));
+
+            var dtosTrailers = item.GetTrailers()
+                .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item));
 
-            return ToOptimizedResult(dtos);
+            return ToOptimizedResult(dtosExtras.Concat(dtosTrailers).ToArray());
         }
 
         /// <summary>

+ 8 - 0
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -2883,6 +2883,14 @@ namespace MediaBrowser.Controller.Entities
             return ExtraIds.Select(LibraryManager.GetItemById).Where(i => i != null && extraTypes.Contains(i.ExtraType.Value)).OrderBy(i => i.SortName);
         }
 
+        public IEnumerable<BaseItem> GetTrailers()
+        {
+            if (this is IHasTrailers)
+                return ((IHasTrailers)this).LocalTrailerIds.Select(LibraryManager.GetItemById).Where(i => i != null).OrderBy(i => i.SortName);
+            else
+                return Array.Empty<BaseItem>();
+        }
+
         public IEnumerable<BaseItem> GetDisplayExtras()
         {
             return GetExtras(DisplayExtraTypes);