diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-01-27 23:30:44 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-01-27 23:30:44 -0500 |
| commit | bed6bed5c699e1b44b0b133cebd450bba829ca41 (patch) | |
| tree | a9064cf8f758ce7092f0b94d44b18de76730550a | |
| parent | 6f59f6cd927ed0ebd0da74e0262fa108ca57cfdb (diff) | |
support getting all episodes per series
| -rw-r--r-- | MediaBrowser.Api/TvShowsService.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Series.cs | 25 |
2 files changed, 41 insertions, 5 deletions
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs index ccb844912..f72a0a441 100644 --- a/MediaBrowser.Api/TvShowsService.cs +++ b/MediaBrowser.Api/TvShowsService.cs @@ -413,7 +413,18 @@ namespace MediaBrowser.Api IEnumerable<Episode> episodes; - if (string.IsNullOrEmpty(request.SeasonId)) + if (!string.IsNullOrWhiteSpace(request.SeasonId)) + { + var season = _libraryManager.GetItemById(new Guid(request.SeasonId)) as Season; + + if (season == null) + { + throw new ResourceNotFoundException("No season exists with Id " + request.SeasonId); + } + + episodes = season.GetEpisodes(user); + } + else if (request.Season.HasValue) { var series = _libraryManager.GetItemById(request.Id) as Series; @@ -426,14 +437,14 @@ namespace MediaBrowser.Api } else { - var season = _libraryManager.GetItemById(new Guid(request.SeasonId)) as Season; + var series = _libraryManager.GetItemById(request.Id) as Series; - if (season == null) + if (series == null) { - throw new ResourceNotFoundException("No season exists with Id " + request.SeasonId); + throw new ResourceNotFoundException("No series exists with Id " + request.Id); } - episodes = season.GetEpisodes(user); + episodes = series.GetEpisodes(user); } // Filter after the fact in case the ui doesn't want them diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index ba537403b..1033df4de 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -185,6 +185,31 @@ namespace MediaBrowser.Controller.Entities.TV .Cast<Season>(); } + public IEnumerable<Episode> GetEpisodes(User user) + { + var config = user.Configuration; + + var allEpisodes = GetSeasons(user, true, true) + .SelectMany(i => i.GetEpisodes(user, config.DisplayMissingEpisodes, config.DisplayUnairedEpisodes)) + .Reverse() + .ToList(); + + // Specials could appear twice based on above - once in season 0, once in the aired season + // This depends on settings for that series + // When this happens, remove the duplicate from season 0 + var returnList = new List<Episode>(); + + foreach (var episode in allEpisodes) + { + if (!returnList.Contains(episode)) + { + returnList.Insert(0, episode); + } + } + + return returnList; + } + public IEnumerable<Episode> GetEpisodes(User user, int seasonNumber) { var config = user.Configuration; |
