EpisodeResolver.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using MediaBrowser.Controller.Entities.TV;
  2. using MediaBrowser.Controller.Library;
  3. using MediaBrowser.Controller.Resolvers;
  4. using MediaBrowser.Model.Entities;
  5. namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
  6. {
  7. /// <summary>
  8. /// Class EpisodeResolver
  9. /// </summary>
  10. public class EpisodeResolver : BaseVideoResolver<Episode>
  11. {
  12. /// <summary>
  13. /// Resolves the specified args.
  14. /// </summary>
  15. /// <param name="args">The args.</param>
  16. /// <returns>Episode.</returns>
  17. protected override Episode Resolve(ItemResolveArgs args)
  18. {
  19. var season = args.Parent as Season;
  20. // If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
  21. if (season != null || args.Parent is Series)
  22. {
  23. Episode episode = null;
  24. if (args.IsDirectory)
  25. {
  26. if (args.ContainsFileSystemEntryByName("video_ts"))
  27. {
  28. episode = new Episode
  29. {
  30. Path = args.Path,
  31. VideoType = VideoType.Dvd
  32. };
  33. }
  34. if (args.ContainsFileSystemEntryByName("bdmv"))
  35. {
  36. episode = new Episode
  37. {
  38. Path = args.Path,
  39. VideoType = VideoType.BluRay
  40. };
  41. }
  42. }
  43. if (episode == null)
  44. {
  45. episode = base.Resolve(args);
  46. }
  47. if (episode != null)
  48. {
  49. if (season != null)
  50. {
  51. episode.ParentIndexNumber = season.IndexNumber;
  52. }
  53. if (episode.ParentIndexNumber == null)
  54. {
  55. episode.ParentIndexNumber = TVUtils.GetSeasonNumberFromEpisodeFile(args.Path);
  56. }
  57. }
  58. return episode;
  59. }
  60. return null;
  61. }
  62. }
  63. }