VideoExtraResolver.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #nullable disable
  2. using Emby.Naming.Common;
  3. using MediaBrowser.Controller.Entities;
  4. using MediaBrowser.Controller.Library;
  5. using MediaBrowser.Controller.Resolvers;
  6. using MediaBrowser.Model.Entities;
  7. namespace Emby.Server.Implementations.Library.Resolvers
  8. {
  9. /// <summary>
  10. /// Resolves a Path into a Video or Video subclass.
  11. /// </summary>
  12. public class VideoExtraResolver : BaseVideoResolver<Video>
  13. {
  14. /// <summary>
  15. /// Initializes a new instance of the <see cref="VideoExtraResolver"/> class.
  16. /// </summary>
  17. /// <param name="namingOptions">The naming options.</param>
  18. public VideoExtraResolver(NamingOptions namingOptions)
  19. : base(namingOptions)
  20. {
  21. }
  22. /// <summary>
  23. /// Gets the priority.
  24. /// </summary>
  25. /// <value>The priority.</value>
  26. public override ResolverPriority Priority => ResolverPriority.Last;
  27. /// <summary>
  28. /// Resolves the specified args.
  29. /// </summary>
  30. /// <param name="args">The args.</param>
  31. /// <returns>The video extra or null if not handled by this resolver.</returns>
  32. public override Video Resolve(ItemResolveArgs args)
  33. {
  34. // Only handle owned items
  35. if (args.Parent != null)
  36. {
  37. return null;
  38. }
  39. var ownedItem = base.Resolve(args);
  40. // Re-resolve items that have their own type
  41. if (ownedItem.ExtraType == ExtraType.Trailer)
  42. {
  43. ownedItem = ResolveVideo<Trailer>(args, false);
  44. }
  45. return ownedItem;
  46. }
  47. }
  48. }