aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs')
-rw-r--r--MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs86
1 files changed, 65 insertions, 21 deletions
diff --git a/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs b/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
index 0961edd1a..f2f3ce122 100644
--- a/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
@@ -1,21 +1,65 @@
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
-
-namespace MediaBrowser.Controller.Resolvers.TV
-{
- [Export(typeof(IBaseItemResolver))]
- public class EpisodeResolver : BaseVideoResolver<Episode>
- {
- protected override Episode Resolve(ItemResolveEventArgs args)
- {
- // If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
- if (args.Parent is Season || args.Parent is Series)
- {
- return base.Resolve(args);
- }
-
- return null;
- }
- }
-}
+using System;
+using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.Library;
+using System.ComponentModel.Composition;
+using MediaBrowser.Model.Entities;
+
+namespace MediaBrowser.Controller.Resolvers.TV
+{
+ [Export(typeof(IBaseItemResolver))]
+ public class EpisodeResolver : BaseVideoResolver<Episode>
+ {
+ protected override Episode Resolve(ItemResolveArgs args)
+ {
+ // If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
+ if (args.Parent is Season || args.Parent is Series)
+ {
+ if (args.IsDirectory)
+ {
+ if (args.ContainsFileSystemEntryByName("video_ts"))
+ {
+ return new Episode
+ {
+ Path = args.Path,
+ VideoType = VideoType.Dvd
+ };
+ }
+ if (args.ContainsFileSystemEntryByName("bdmv"))
+ {
+ return new Episode
+ {
+ Path = args.Path,
+ VideoType = VideoType.BluRay
+ };
+ }
+ }
+
+ return base.Resolve(args);
+ }
+
+ return null;
+ }
+
+ protected override void SetInitialItemValues(Episode item, ItemResolveArgs args)
+ {
+ base.SetInitialItemValues(item, args);
+
+ //fill in our season and series ids
+ var season = args.Parent as Season;
+ if (season != null)
+ {
+ item.SeasonItemId = season.Id;
+ var series = season.Parent as Series;
+ if (series != null)
+ {
+ item.SeriesItemId = series.Id;
+ }
+ }
+ else
+ {
+ var series = args.Parent as Series;
+ item.SeriesItemId = series != null ? series.Id : Guid.Empty;
+ }
+ }
+ }
+}