TrailerResolver.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using MediaBrowser.Controller.Entities;
  2. using MediaBrowser.Controller.Library;
  3. using MediaBrowser.Controller.Resolvers;
  4. using System;
  5. using System.ComponentModel.Composition;
  6. using System.Linq;
  7. namespace MediaBrowser.Plugins.Trailers.Resolvers
  8. {
  9. /// <summary>
  10. /// Class TrailerResolver
  11. /// </summary>
  12. [Export(typeof(IBaseItemResolver))]
  13. public class TrailerResolver : BaseVideoResolver<Trailer>
  14. {
  15. /// <summary>
  16. /// Resolves the specified args.
  17. /// </summary>
  18. /// <param name="args">The args.</param>
  19. /// <returns>Trailer.</returns>
  20. protected override Trailer Resolve(ItemResolveArgs args)
  21. {
  22. // Must be a directory and under the trailer download folder
  23. if (args.IsDirectory && args.Path.StartsWith(Plugin.Instance.DownloadPath, StringComparison.OrdinalIgnoreCase))
  24. {
  25. // The trailer must be a video file
  26. return FindTrailer(args);
  27. }
  28. return null;
  29. }
  30. /// <summary>
  31. /// Finds a movie based on a child file system entries
  32. /// </summary>
  33. /// <param name="args">The args.</param>
  34. /// <returns>Trailer.</returns>
  35. private Trailer FindTrailer(ItemResolveArgs args)
  36. {
  37. // Loop through each child file/folder and see if we find a video
  38. return args.FileSystemChildren
  39. .Where(c => !c.IsDirectory)
  40. .Select(child => base.Resolve(new ItemResolveArgs
  41. {
  42. FileInfo = child,
  43. Path = child.Path
  44. }))
  45. .FirstOrDefault(i => i != null);
  46. }
  47. }
  48. }