aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/TvShowsService.cs21
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs25
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;