diff options
Diffstat (limited to 'Emby.Server.Implementations')
3 files changed, 58 insertions, 22 deletions
diff --git a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs deleted file mode 100644 index 72341d9db..000000000 --- a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs +++ /dev/null @@ -1,18 +0,0 @@ -#nullable disable - -#pragma warning disable CS1591 - -using Emby.Naming.Common; -using MediaBrowser.Controller.Entities; - -namespace Emby.Server.Implementations.Library.Resolvers -{ - public class GenericVideoResolver<T> : BaseVideoResolver<T> - where T : Video, new() - { - public GenericVideoResolver(NamingOptions namingOptions) - : base(namingOptions) - { - } - } -} diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 4feaf3fb4..1a9295dc8 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -105,10 +105,9 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies if (string.IsNullOrEmpty(collectionType)) { - // Owned items will be caught by the plain video resolver + // Owned items will be caught by the video extra resolver if (args.Parent == null) { - // return FindMovie<Video>(args.Path, args.Parent, files, args.DirectoryService, collectionType); return null; } @@ -129,10 +128,10 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies return movie?.ExtraType == null ? movie : null; } - // Handle owned items + // Owned items will be caught by the video extra resolver if (args.Parent == null) { - return base.Resolve(args); + return null; } if (IsInvalid(args.Parent, collectionType)) diff --git a/Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs b/Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs new file mode 100644 index 000000000..9aadce88c --- /dev/null +++ b/Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs @@ -0,0 +1,55 @@ +#nullable disable + +using Emby.Naming.Common; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Resolvers; +using MediaBrowser.Model.Entities; + +namespace Emby.Server.Implementations.Library.Resolvers +{ + /// <summary> + /// Resolves a Path into a Video or Video subclass. + /// </summary> + public class VideoExtraResolver : BaseVideoResolver<Video> + { + /// <summary> + /// Initializes a new instance of the <see cref="VideoExtraResolver"/> class. + /// </summary> + /// <param name="namingOptions">The naming options.</param> + public VideoExtraResolver(NamingOptions namingOptions) + : base(namingOptions) + { + } + + /// <summary> + /// Gets the priority. + /// </summary> + /// <value>The priority.</value> + public override ResolverPriority Priority => ResolverPriority.Last; + + /// <summary> + /// Resolves the specified args. + /// </summary> + /// <param name="args">The args.</param> + /// <returns>The video extra or null if not handled by this resolver.</returns> + public override Video Resolve(ItemResolveArgs args) + { + // Only handle owned items + if (args.Parent != null) + { + return null; + } + + var ownedItem = base.Resolve(args); + + // Re-resolve items that have their own type + if (ownedItem.ExtraType == ExtraType.Trailer) + { + ownedItem = ResolveVideo<Trailer>(args, false); + } + + return ownedItem; + } + } +} |
