From aa83cb75fde730f72e2d196abe2a014e3739ff3a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 11 Dec 2013 14:54:20 -0500 Subject: make next up smarter using watched history from deleted items --- MediaBrowser.Api/TvShowsService.cs | 41 +++++++++++--------------------------- 1 file changed, 12 insertions(+), 29 deletions(-) (limited to 'MediaBrowser.Api') diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs index 11cd72cf40..9521f82cce 100644 --- a/MediaBrowser.Api/TvShowsService.cs +++ b/MediaBrowser.Api/TvShowsService.cs @@ -192,18 +192,6 @@ namespace MediaBrowser.Api /// The request. /// System.Object. public object Get(GetNextUpEpisodes request) - { - var result = GetNextUpEpisodeItemsResult(request); - - return ToOptimizedResult(result); - } - - /// - /// Gets the next up episodes. - /// - /// The request. - /// Task{ItemsResult}. - private ItemsResult GetNextUpEpisodeItemsResult(GetNextUpEpisodes request) { var user = _userManager.GetUserById(request.UserId); @@ -216,11 +204,13 @@ namespace MediaBrowser.Api var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray(); - return new ItemsResult + var result = new ItemsResult { TotalRecordCount = itemsList.Count, Items = returnItems }; + + return ToOptimizedResult(result); } public IEnumerable GetNextUpEpisodes(GetNextUpEpisodes request) @@ -274,14 +264,12 @@ namespace MediaBrowser.Api /// Task{Episode}. private Tuple GetNextUp(Series series, User user, GetNextUpEpisodes request) { - var allEpisodes = series.GetRecursiveChildren(user) - .OfType() - .OrderByDescending(i => i.PremiereDate ?? DateTime.MinValue) - .ThenByDescending(i => i.IndexNumber ?? 0) + // Get them in display order, then reverse + var allEpisodes = series.GetSeasons(user, true, true) + .SelectMany(i => i.GetEpisodes(user, true, true)) + .Reverse() .ToList(); - allEpisodes = FilterItems(request, allEpisodes).ToList(); - Episode lastWatched = null; var lastWatchedDate = DateTime.MinValue; Episode nextUp = null; @@ -303,7 +291,10 @@ namespace MediaBrowser.Api } else { - nextUp = episode; + if (episode.LocationType != LocationType.Virtual) + { + nextUp = episode; + } } } @@ -315,15 +306,6 @@ namespace MediaBrowser.Api return new Tuple(null, lastWatchedDate); } - - private IEnumerable FilterItems(GetNextUpEpisodes request, IEnumerable items) - { - // Make this configurable when needed - items = items.Where(i => i.LocationType != LocationType.Virtual); - - return items; - } - private IEnumerable FilterSeries(GetNextUpEpisodes request, IEnumerable items) { if (!string.IsNullOrWhiteSpace(request.SeriesId)) @@ -369,6 +351,7 @@ namespace MediaBrowser.Api { throw new ResourceNotFoundException("No series exists with Id " + request.Id); } + var seasons = series.GetSeasons(user); if (request.IsSpecialSeason.HasValue) -- cgit v1.2.3