Sfoglia il codice sorgente

update live tv suggestions

Luke Pulverenti 9 anni fa
parent
commit
accdbfaab2
1 ha cambiato i file con 14 aggiunte e 42 eliminazioni
  1. 14 42
      MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

+ 14 - 42
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)