EpisodeResolver.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. if (season != null)
  52. {
  53. episode.ParentIndexNumber = season.IndexNumber;
  54. }
  55. if (episode.ParentIndexNumber == null)
  56. {
  57. episode.ParentIndexNumber = TVUtils.GetSeasonNumberFromEpisodeFile(args.Path);
  58. }
  59. }
  60. return episode;
  61. }
  62. return null;
  63. }
  64. /// <summary>
  65. /// Sets the initial item values.
  66. /// </summary>
  67. /// <param name="item">The item.</param>
  68. /// <param name="args">The args.</param>
  69. protected override void SetInitialItemValues(Episode item, ItemResolveArgs args)
  70. {
  71. base.SetInitialItemValues(item, args);
  72. //fill in our season and series ids
  73. var season = args.Parent as Season;
  74. if (season != null)
  75. {
  76. item.SeasonItemId = season.Id;
  77. var series = season.Parent as Series;
  78. if (series != null)
  79. {
  80. item.SeriesItemId = series.Id;
  81. }
  82. }
  83. else
  84. {
  85. var series = args.Parent as Series;
  86. item.SeriesItemId = series != null ? series.Id : Guid.Empty;
  87. }
  88. }
  89. }
  90. }