aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs56
1 files changed, 14 insertions, 42 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 91f84e2fe..4a6f185c6 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -939,9 +939,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv
IsMovie = query.IsMovie,
IsSports = query.IsSports,
IsKids = query.IsKids,
- EnableTotalRecordCount = query.EnableTotalRecordCount
+ EnableTotalRecordCount = query.EnableTotalRecordCount,
+ SortBy = new[] { ItemSortBy.StartDate }
};
+ if (query.Limit.HasValue)
+ {
+ internalQuery.Limit = Math.Max(query.Limit.Value * 5, 500);
+ }
+
if (query.HasAired.HasValue)
{
if (query.HasAired.Value)
@@ -958,15 +964,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var programList = programs.ToList();
- var genres = programList.SelectMany(i => i.Genres)
- .Where(i => !string.IsNullOrWhiteSpace(i))
- .DistinctNames()
- .Select(i => _libraryManager.GetGenre(i))
- .DistinctBy(i => i.Id)
- .ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase);
+ var factorChannelWatchCount = (query.IsAiring ?? false) || (query.IsKids ?? false) || (query.IsSports ?? false) || (query.IsMovie ?? false);
programs = programList.OrderBy(i => i.HasImage(ImageType.Primary) ? 0 : 1)
- .ThenByDescending(i => GetRecommendationScore(i, user.Id, genres))
+ .ThenByDescending(i => GetRecommendationScore(i, user.Id, factorChannelWatchCount))
.ThenBy(i => i.StartDate);
if (query.Limit.HasValue)
@@ -1004,7 +1005,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return result;
}
- private int GetRecommendationScore(LiveTvProgram program, Guid userId, Dictionary<string, Genre> genres)
+ private int GetRecommendationScore(LiveTvProgram program, Guid userId, bool factorChannelWatchCount)
{
var score = 0;
@@ -1036,41 +1037,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv
score += 3;
}
- score += GetGenreScore(program.Genres, userId, genres);
-
- return score;
- }
-
- private int GetGenreScore(IEnumerable<string> programGenres, Guid userId, Dictionary<string, Genre> genres)
- {
- return programGenres.Select(i =>
+ if (factorChannelWatchCount)
{
- var score = 0;
-
- Genre genre;
-
- if (genres.TryGetValue(i, out genre))
- {
- var genreUserdata = _userDataManager.GetUserData(userId, genre);
-
- if (genreUserdata.Likes ?? false)
- {
- score++;
- }
- else if (!(genreUserdata.Likes ?? true))
- {
- score--;
- }
-
- if (genreUserdata.IsFavorite)
- {
- score += 2;
- }
- }
-
- return score;
+ score += channelUserdata.PlayCount;
+ }
- }).Sum();
+ return score;
}
private async Task AddRecordingInfo(IEnumerable<Tuple<BaseItemDto, string, string>> programs, CancellationToken cancellationToken)