EpisodeResolver.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using MediaBrowser.Controller.Entities.TV;
  2. using MediaBrowser.Controller.Library;
  3. using MediaBrowser.Controller.Resolvers;
  4. using MediaBrowser.Model.Entities;
  5. using System;
  6. namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
  7. {
  8. /// <summary>
  9. /// Class EpisodeResolver
  10. /// </summary>
  11. public class EpisodeResolver : BaseVideoResolver<Episode>
  12. {
  13. /// <summary>
  14. /// Resolves the specified args.
  15. /// </summary>
  16. /// <param name="args">The args.</param>
  17. /// <returns>Episode.</returns>
  18. protected override Episode Resolve(ItemResolveArgs args)
  19. {
  20. var season = args.Parent as Season;
  21. // If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
  22. if (season != null || args.Parent is Series)
  23. {
  24. Episode episode = null;
  25. if (args.IsDirectory)
  26. {
  27. if (args.ContainsFileSystemEntryByName("video_ts"))
  28. {
  29. episode = new Episode
  30. {
  31. Path = args.Path,
  32. VideoType = VideoType.Dvd
  33. };
  34. }
  35. if (args.ContainsFileSystemEntryByName("bdmv"))
  36. {
  37. episode = new Episode
  38. {
  39. Path = args.Path,
  40. VideoType = VideoType.BluRay
  41. };
  42. }
  43. }
  44. if (episode == null)
  45. {
  46. episode = base.Resolve(args);
  47. }
  48. if (episode != null)
  49. {
  50. episode.IndexNumber = TVUtils.GetEpisodeNumberFromFile(args.Path, season != null);
  51. episode.IndexNumberEnd = TVUtils.GetEndingEpisodeNumberFromFile(args.Path);
  52. if (season != null)
  53. {
  54. episode.ParentIndexNumber = season.IndexNumber;
  55. }
  56. if (episode.ParentIndexNumber == null)
  57. {
  58. episode.ParentIndexNumber = TVUtils.GetSeasonNumberFromEpisodeFile(args.Path);
  59. }
  60. }
  61. return episode;
  62. }
  63. return null;
  64. }
  65. /// <summary>
  66. /// Sets the initial item values.
  67. /// </summary>
  68. /// <param name="item">The item.</param>
  69. /// <param name="args">The args.</param>
  70. protected override void SetInitialItemValues(Episode item, ItemResolveArgs args)
  71. {
  72. base.SetInitialItemValues(item, args);
  73. //fill in our season and series ids
  74. var season = args.Parent as Season;
  75. if (season != null)
  76. {
  77. item.SeasonItemId = season.Id;
  78. var series = season.Parent as Series;
  79. if (series != null)
  80. {
  81. item.SeriesItemId = series.Id;
  82. }
  83. }
  84. else
  85. {
  86. var series = args.Parent as Series;
  87. item.SeriesItemId = series != null ? series.Id : Guid.Empty;
  88. }
  89. }
  90. }
  91. }