Sfoglia il codice sorgente

add setting to hide external content from suggestions

Luke Pulverenti 8 anni fa
parent
commit
699bdacebc

+ 5 - 2
MediaBrowser.Api/Library/LibraryService.cs

@@ -25,6 +25,7 @@ using System.Linq;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using CommonIO;
 using CommonIO;
+using MediaBrowser.Controller.Configuration;
 
 
 namespace MediaBrowser.Api.Library
 namespace MediaBrowser.Api.Library
 {
 {
@@ -288,12 +289,13 @@ namespace MediaBrowser.Api.Library
         private readonly ITVSeriesManager _tvManager;
         private readonly ITVSeriesManager _tvManager;
         private readonly ILibraryMonitor _libraryMonitor;
         private readonly ILibraryMonitor _libraryMonitor;
         private readonly IFileSystem _fileSystem;
         private readonly IFileSystem _fileSystem;
+        private readonly IServerConfigurationManager _config;
 
 
         /// <summary>
         /// <summary>
         /// Initializes a new instance of the <see cref="LibraryService" /> class.
         /// Initializes a new instance of the <see cref="LibraryService" /> class.
         /// </summary>
         /// </summary>
         public LibraryService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager,
         public LibraryService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager,
-                              IDtoService dtoService, IUserDataManager userDataManager, IAuthorizationContext authContext, IActivityManager activityManager, ILocalizationManager localization, ILiveTvManager liveTv, ITVSeriesManager tvManager, ILibraryMonitor libraryMonitor, IFileSystem fileSystem)
+                              IDtoService dtoService, IUserDataManager userDataManager, IAuthorizationContext authContext, IActivityManager activityManager, ILocalizationManager localization, ILiveTvManager liveTv, ITVSeriesManager tvManager, ILibraryMonitor libraryMonitor, IFileSystem fileSystem, IServerConfigurationManager config)
         {
         {
             _itemRepo = itemRepo;
             _itemRepo = itemRepo;
             _libraryManager = libraryManager;
             _libraryManager = libraryManager;
@@ -307,6 +309,7 @@ namespace MediaBrowser.Api.Library
             _tvManager = tvManager;
             _tvManager = tvManager;
             _libraryMonitor = libraryMonitor;
             _libraryMonitor = libraryMonitor;
             _fileSystem = fileSystem;
             _fileSystem = fileSystem;
+            _config = config;
         }
         }
 
 
         public object Get(GetSimilarItems request)
         public object Get(GetSimilarItems request)
@@ -377,7 +380,7 @@ namespace MediaBrowser.Api.Library
 
 
             if (item is Movie || (program != null && program.IsMovie) || item is Trailer)
             if (item is Movie || (program != null && program.IsMovie) || item is Trailer)
             {
             {
-                return new MoviesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService)
+                return new MoviesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _config)
                 {
                 {
                     AuthorizationContext = AuthorizationContext,
                     AuthorizationContext = AuthorizationContext,
                     Logger = Logger,
                     Logger = Logger,

+ 44 - 31
MediaBrowser.Api/Movies/MoviesService.cs

@@ -14,6 +14,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
+using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.LiveTv;
 using MediaBrowser.Controller.LiveTv;
 
 
 namespace MediaBrowser.Api.Movies
 namespace MediaBrowser.Api.Movies
@@ -88,6 +89,7 @@ namespace MediaBrowser.Api.Movies
 
 
         private readonly IItemRepository _itemRepo;
         private readonly IItemRepository _itemRepo;
         private readonly IDtoService _dtoService;
         private readonly IDtoService _dtoService;
+        private readonly IServerConfigurationManager _config;
 
 
         /// <summary>
         /// <summary>
         /// Initializes a new instance of the <see cref="MoviesService" /> class.
         /// Initializes a new instance of the <see cref="MoviesService" /> class.
@@ -97,13 +99,14 @@ namespace MediaBrowser.Api.Movies
         /// <param name="libraryManager">The library manager.</param>
         /// <param name="libraryManager">The library manager.</param>
         /// <param name="itemRepo">The item repo.</param>
         /// <param name="itemRepo">The item repo.</param>
         /// <param name="dtoService">The dto service.</param>
         /// <param name="dtoService">The dto service.</param>
-        public MoviesService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService)
+        public MoviesService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService, IServerConfigurationManager config)
         {
         {
             _userManager = userManager;
             _userManager = userManager;
             _userDataRepository = userDataRepository;
             _userDataRepository = userDataRepository;
             _libraryManager = libraryManager;
             _libraryManager = libraryManager;
             _itemRepo = itemRepo;
             _itemRepo = itemRepo;
             _dtoService = dtoService;
             _dtoService = dtoService;
+            _config = config;
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -146,15 +149,17 @@ namespace MediaBrowser.Api.Movies
                 (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
                 (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
                 _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);
                 _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);
 
 
+            var itemTypes = new List<string> { typeof(Movie).Name };
+            if (_config.Configuration.EnableExternalContentInSuggestions)
+            {
+                itemTypes.Add(typeof(Trailer).Name);
+                itemTypes.Add(typeof(LiveTvProgram).Name);
+            }
+
             var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
             var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
             {
             {
                 Limit = request.Limit,
                 Limit = request.Limit,
-                IncludeItemTypes = new[]
-                {
-                        typeof(Movie).Name,
-                        typeof(Trailer).Name,
-                        typeof(LiveTvProgram).Name
-                },
+                IncludeItemTypes = itemTypes.ToArray(),
                 IsMovie = true,
                 IsMovie = true,
                 SimilarTo = item,
                 SimilarTo = item,
                 EnableGroupByMetadataKey = true
                 EnableGroupByMetadataKey = true
@@ -198,14 +203,16 @@ namespace MediaBrowser.Api.Movies
 
 
             var recentlyPlayedMovies = _libraryManager.GetItemList(query).ToList();
             var recentlyPlayedMovies = _libraryManager.GetItemList(query).ToList();
 
 
+            var itemTypes = new List<string> { typeof(Movie).Name };
+            if (_config.Configuration.EnableExternalContentInSuggestions)
+            {
+                itemTypes.Add(typeof(Trailer).Name);
+                itemTypes.Add(typeof(LiveTvProgram).Name);
+            }
+
             var likedMovies = _libraryManager.GetItemList(new InternalItemsQuery(user)
             var likedMovies = _libraryManager.GetItemList(new InternalItemsQuery(user)
             {
             {
-                IncludeItemTypes = new[]
-                {
-                   typeof(Movie).Name,
-                   typeof(Trailer).Name,
-                   typeof(LiveTvProgram).Name
-                },
+                IncludeItemTypes = itemTypes.ToArray(),
                 IsMovie = true,
                 IsMovie = true,
                 SortBy = new[] { ItemSortBy.Random },
                 SortBy = new[] { ItemSortBy.Random },
                 SortOrder = SortOrder.Descending,
                 SortOrder = SortOrder.Descending,
@@ -278,6 +285,13 @@ namespace MediaBrowser.Api.Movies
 
 
         private IEnumerable<RecommendationDto> GetWithDirector(User user, IEnumerable<string> names, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
         private IEnumerable<RecommendationDto> GetWithDirector(User user, IEnumerable<string> names, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
         {
         {
+            var itemTypes = new List<string> { typeof(Movie).Name };
+            if (_config.Configuration.EnableExternalContentInSuggestions)
+            {
+                itemTypes.Add(typeof(Trailer).Name);
+                itemTypes.Add(typeof(LiveTvProgram).Name);
+            }
+
             foreach (var name in names)
             foreach (var name in names)
             {
             {
                 var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
                 var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
@@ -286,12 +300,7 @@ namespace MediaBrowser.Api.Movies
                     // Account for duplicates by imdb id, since the database doesn't support this yet
                     // Account for duplicates by imdb id, since the database doesn't support this yet
                     Limit = itemLimit + 2,
                     Limit = itemLimit + 2,
                     PersonTypes = new[] { PersonType.Director },
                     PersonTypes = new[] { PersonType.Director },
-                    IncludeItemTypes = new[]
-                    {
-                        typeof(Movie).Name,
-                        typeof(Trailer).Name,
-                        typeof(LiveTvProgram).Name
-                    },
+                    IncludeItemTypes = itemTypes.ToArray(),
                     IsMovie = true,
                     IsMovie = true,
                     EnableGroupByMetadataKey = true
                     EnableGroupByMetadataKey = true
 
 
@@ -314,6 +323,13 @@ namespace MediaBrowser.Api.Movies
 
 
         private IEnumerable<RecommendationDto> GetWithActor(User user, IEnumerable<string> names, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
         private IEnumerable<RecommendationDto> GetWithActor(User user, IEnumerable<string> names, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
         {
         {
+            var itemTypes = new List<string> { typeof(Movie).Name };
+            if (_config.Configuration.EnableExternalContentInSuggestions)
+            {
+                itemTypes.Add(typeof(Trailer).Name);
+                itemTypes.Add(typeof(LiveTvProgram).Name);
+            }
+
             foreach (var name in names)
             foreach (var name in names)
             {
             {
                 var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
                 var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
@@ -321,12 +337,7 @@ namespace MediaBrowser.Api.Movies
                     Person = name,
                     Person = name,
                     // Account for duplicates by imdb id, since the database doesn't support this yet
                     // Account for duplicates by imdb id, since the database doesn't support this yet
                     Limit = itemLimit + 2,
                     Limit = itemLimit + 2,
-                    IncludeItemTypes = new[]
-                    {
-                        typeof(Movie).Name,
-                        typeof(Trailer).Name,
-                        typeof(LiveTvProgram).Name
-                    },
+                    IncludeItemTypes = itemTypes.ToArray(),
                     IsMovie = true,
                     IsMovie = true,
                     EnableGroupByMetadataKey = true
                     EnableGroupByMetadataKey = true
 
 
@@ -349,17 +360,19 @@ namespace MediaBrowser.Api.Movies
 
 
         private IEnumerable<RecommendationDto> GetSimilarTo(User user, List<BaseItem> baselineItems, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
         private IEnumerable<RecommendationDto> GetSimilarTo(User user, List<BaseItem> baselineItems, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
         {
         {
+            var itemTypes = new List<string> { typeof(Movie).Name };
+            if (_config.Configuration.EnableExternalContentInSuggestions)
+            {
+                itemTypes.Add(typeof(Trailer).Name);
+                itemTypes.Add(typeof(LiveTvProgram).Name);
+            }
+
             foreach (var item in baselineItems)
             foreach (var item in baselineItems)
             {
             {
                 var similar = _libraryManager.GetItemList(new InternalItemsQuery(user)
                 var similar = _libraryManager.GetItemList(new InternalItemsQuery(user)
                 {
                 {
                     Limit = itemLimit,
                     Limit = itemLimit,
-                    IncludeItemTypes = new[]
-                    {
-                        typeof(Movie).Name,
-                        typeof(Trailer).Name,
-                        typeof(LiveTvProgram).Name
-                    },
+                    IncludeItemTypes = itemTypes.ToArray(),
                     IsMovie = true,
                     IsMovie = true,
                     SimilarTo = item,
                     SimilarTo = item,
                     EnableGroupByMetadataKey = true
                     EnableGroupByMetadataKey = true

+ 2 - 0
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -205,6 +205,7 @@ namespace MediaBrowser.Model.Configuration
         public string[] LocalNetworkAddresses { get; set; }
         public string[] LocalNetworkAddresses { get; set; }
         public string[] CodecsUsed { get; set; }
         public string[] CodecsUsed { get; set; }
         public bool EnableChannelView { get; set; }
         public bool EnableChannelView { get; set; }
+        public bool EnableExternalContentInSuggestions { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
         /// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
@@ -218,6 +219,7 @@ namespace MediaBrowser.Model.Configuration
 
 
             EnableLocalizedGuids = true;
             EnableLocalizedGuids = true;
             DisplaySpecialsWithinSeasons = true;
             DisplaySpecialsWithinSeasons = true;
+            EnableExternalContentInSuggestions = true;
 
 
             ImageSavingConvention = ImageSavingConvention.Compatible;
             ImageSavingConvention = ImageSavingConvention.Compatible;
             PublicPort = 8096;
             PublicPort = 8096;