EpisodeResolver.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 isInSeason = args.Parent is Season;
  21. // If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
  22. if (isInSeason || args.Parent is Series)
  23. {
  24. if (args.IsDirectory)
  25. {
  26. if (args.ContainsFileSystemEntryByName("video_ts"))
  27. {
  28. return new Episode
  29. {
  30. IndexNumber = TVUtils.GetEpisodeNumberFromFile(args.Path, isInSeason),
  31. Path = args.Path,
  32. VideoType = VideoType.Dvd
  33. };
  34. }
  35. if (args.ContainsFileSystemEntryByName("bdmv"))
  36. {
  37. return new Episode
  38. {
  39. IndexNumber = TVUtils.GetEpisodeNumberFromFile(args.Path, isInSeason),
  40. Path = args.Path,
  41. VideoType = VideoType.BluRay
  42. };
  43. }
  44. }
  45. var episide = base.Resolve(args);
  46. if (episide != null)
  47. {
  48. episide.IndexNumber = TVUtils.GetEpisodeNumberFromFile(args.Path, isInSeason);
  49. }
  50. return episide;
  51. }
  52. return null;
  53. }
  54. /// <summary>
  55. /// Sets the initial item values.
  56. /// </summary>
  57. /// <param name="item">The item.</param>
  58. /// <param name="args">The args.</param>
  59. protected override void SetInitialItemValues(Episode item, ItemResolveArgs args)
  60. {
  61. base.SetInitialItemValues(item, args);
  62. //fill in our season and series ids
  63. var season = args.Parent as Season;
  64. if (season != null)
  65. {
  66. item.SeasonItemId = season.Id;
  67. var series = season.Parent as Series;
  68. if (series != null)
  69. {
  70. item.SeriesItemId = series.Id;
  71. }
  72. }
  73. else
  74. {
  75. var series = args.Parent as Series;
  76. item.SeriesItemId = series != null ? series.Id : Guid.Empty;
  77. }
  78. }
  79. }
  80. }