aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs')
-rw-r--r--MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs102
1 files changed, 21 insertions, 81 deletions
diff --git a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
index 379698059..6c1aa04cf 100644
--- a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
+++ b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
@@ -21,6 +21,9 @@ namespace MediaBrowser.Api.DefaultTheme
{
[ApiMember(Name = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
public Guid UserId { get; set; }
+
+ [ApiMember(Name = "RecentlyPlayedGamesLimit", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
+ public int RecentlyPlayedGamesLimit { get; set; }
}
[Route("/MBT/DefaultTheme/TV", "GET")]
@@ -245,6 +248,19 @@ namespace MediaBrowser.Api.DefaultTheme
var fields = new List<ItemFields>();
+ view.GameSystems = items
+ .OfType<GameSystem>()
+ .OrderBy(i => i.SortName)
+ .Select(i => _dtoService.GetBaseItemDto(i, fields, user))
+ .ToList();
+
+ var currentUserId = user.Id;
+ view.RecentlyPlayedGames = gamesWithImages
+ .OrderByDescending(i => _userDataManager.GetUserData(currentUserId, i.GetUserDataKey()).LastPlayedDate ?? DateTime.MinValue)
+ .Take(request.RecentlyPlayedGamesLimit)
+ .Select(i => _dtoService.GetBaseItemDto(i, fields, user))
+ .ToList();
+
view.BackdropItems = gamesWithBackdrops
.OrderBy(i => Guid.NewGuid())
.Take(10)
@@ -265,12 +281,6 @@ namespace MediaBrowser.Api.DefaultTheme
.Take(1)
.ToList();
- view.MiniSpotlights = gamesWithBackdrops
- .Randomize("minispotlight")
- .Take(5)
- .Select(i => _dtoService.GetBaseItemDto(i, fields, user))
- .ToList();
-
return ToOptimizedResult(view);
}
@@ -324,8 +334,6 @@ namespace MediaBrowser.Api.DefaultTheme
.Take(1)
.ToList();
- view.ActorItems = GetActors(series, user.Id);
-
var spotlightSeries = seriesWithBestBackdrops
.Where(i => i.CommunityRating.HasValue && i.CommunityRating >= 8.5)
.ToList();
@@ -409,10 +417,6 @@ namespace MediaBrowser.Api.DefaultTheme
var items = user.RootFolder.GetRecursiveChildren(user, i => i is Movie || i is Trailer || i is BoxSet)
.ToList();
- // Exclude trailers from backdrops because they're not always 1080p
- var itemsWithBackdrops = items.Where(i => i.BackdropImagePaths.Count > 0)
- .ToList();
-
var view = new MoviesView();
var movies = items.OfType<Movie>()
@@ -439,7 +443,7 @@ namespace MediaBrowser.Api.DefaultTheme
var fields = new List<ItemFields>();
- var itemsWithTopBackdrops = FilterItemsForBackdropDisplay(itemsWithBackdrops).ToList();
+ var itemsWithTopBackdrops = FilterItemsForBackdropDisplay(moviesWithBackdrops).ToList();
view.BackdropItems = itemsWithTopBackdrops
.OrderBy(i => Guid.NewGuid())
@@ -515,10 +519,10 @@ namespace MediaBrowser.Api.DefaultTheme
.Take(1)
.ToList();
- view.PeopleItems = GetActors(items, user.Id);
-
+ var currentUserId = user.Id;
var spotlightItems = itemsWithTopBackdrops
.Where(i => i.CommunityRating.HasValue && i.CommunityRating >= 8)
+ .Where(i => !_userDataManager.GetUserData(currentUserId, i.GetUserDataKey()).Played)
.ToList();
if (spotlightItems.Count < 20)
@@ -551,14 +555,13 @@ namespace MediaBrowser.Api.DefaultTheme
.ToList();
// Avoid implicitly captured closure
- var currentUserId = user.Id;
- miniSpotlightItems.InsertRange(2, moviesWithBackdrops
+ miniSpotlightItems.InsertRange(0, moviesWithBackdrops
.Where(i => _userDataManager.GetUserData(currentUserId, i.GetUserDataKey()).PlaybackPositionTicks > 0)
.OrderByDescending(i => _userDataManager.GetUserData(currentUserId, i.GetUserDataKey()).LastPlayedDate ?? DateTime.MaxValue)
.Take(3));
view.MiniSpotlights = miniSpotlightItems
- .Take(5)
+ .Take(3)
.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
.ToList();
@@ -617,69 +620,6 @@ namespace MediaBrowser.Api.DefaultTheme
}
}
- private List<ItemStub> GetActors(IEnumerable<BaseItem> mediaItems, Guid userId)
- {
- var actors = mediaItems.SelectMany(i => i.People)
- .Select(i => i.Name)
- .Distinct(StringComparer.OrdinalIgnoreCase)
- .Randomize()
- .ToList();
-
- var result = actors.Select(actor =>
- {
- try
- {
- var person = _libraryManager.GetPerson(actor);
-
- if (!string.IsNullOrEmpty(person.PrimaryImagePath))
- {
- var userdata = _userDataManager.GetUserData(userId, person.GetUserDataKey());
-
- if (userdata.IsFavorite || (userdata.Likes ?? false))
- {
- return GetItemStub(person, ImageType.Primary);
- }
- }
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error getting person {0}", ex, actor);
- }
-
- return null;
- })
- .Where(i => i != null)
- .Take(1)
- .ToList();
-
- if (result.Count == 0)
- {
- result = actors.Select(actor =>
- {
- try
- {
- var person = _libraryManager.GetPerson(actor);
-
- if (!string.IsNullOrEmpty(person.PrimaryImagePath))
- {
- return GetItemStub(person, ImageType.Primary);
- }
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error getting person {0}", ex, actor);
- }
-
- return null;
- })
- .Where(i => i != null)
- .Take(1)
- .ToList();
- }
-
- return result;
- }
-
private ItemStub GetItemStub(BaseItem item, ImageType imageType)
{
var stub = new ItemStub