1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using MediaBrowser.Controller.Entities.TV;
- using MediaBrowser.Controller.Library;
- using MediaBrowser.Controller.Resolvers;
- using MediaBrowser.Model.Entities;
- using System.Linq;
- namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
- {
- /// <summary>
- /// Class EpisodeResolver
- /// </summary>
- public class EpisodeResolver : BaseVideoResolver<Episode>
- {
- /// <summary>
- /// Resolves the specified args.
- /// </summary>
- /// <param name="args">The args.</param>
- /// <returns>Episode.</returns>
- protected override Episode Resolve(ItemResolveArgs args)
- {
- var parent = args.Parent;
- if (parent == null)
- {
- return null;
- }
- var season = parent as Season;
- // Just in case the user decided to nest episodes.
- // Not officially supported but in some cases we can handle it.
- if (season == null)
- {
- season = parent.Parents.OfType<Season>().FirstOrDefault();
- }
- // If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
- if (season != null || parent is Series || parent.Parents.OfType<Series>().Any())
- {
- Episode episode = null;
- if (args.IsDirectory)
- {
- if (args.ContainsFileSystemEntryByName("video_ts"))
- {
- episode = new Episode
- {
- Path = args.Path,
- VideoType = VideoType.Dvd
- };
- }
- if (args.ContainsFileSystemEntryByName("bdmv"))
- {
- episode = new Episode
- {
- Path = args.Path,
- VideoType = VideoType.BluRay
- };
- }
- }
- if (episode == null)
- {
- episode = base.Resolve(args);
- }
- if (episode != null)
- {
- if (season != null)
- {
- episode.ParentIndexNumber = season.IndexNumber;
- }
- if (episode.ParentIndexNumber == null)
- {
- episode.ParentIndexNumber = TVUtils.GetSeasonNumberFromEpisodeFile(args.Path);
- }
- }
- return episode;
- }
- return null;
- }
- }
- }
|