aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
authorCody Robibero <cody@robibe.ro>2021-12-25 23:31:46 +0000
committerGitHub <noreply@github.com>2021-12-25 23:31:46 +0000
commita615f87680eeb847807a47168bb4c5551a48e59d (patch)
treeb12136687ac50c99132c09fa208be4b90dece314 /Emby.Server.Implementations
parentd594f81f65eb24d80ac4988c181bc099e8ec7c38 (diff)
parentcf29aae690961dc281e79931932834d9c5f7854d (diff)
Merge pull request #7044 from 1337joe/fix-trailers-v2
Fix trailers v2
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs18
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs7
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs55
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;
+ }
+ }
+}