support getting all episodes per series

This commit is contained in:
Luke Pulverenti 2015-01-27 23:30:44 -05:00
parent 6f59f6cd92
commit bed6bed5c6
2 changed files with 41 additions and 5 deletions

View File

@ -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

View File

@ -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;