diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs
index 14a771db03..c6b637f015 100644
--- a/MediaBrowser.Api/Library/LibraryService.cs
+++ b/MediaBrowser.Api/Library/LibraryService.cs
@@ -25,6 +25,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using CommonIO;
+using MediaBrowser.Controller.Configuration;
namespace MediaBrowser.Api.Library
{
@@ -288,12 +289,13 @@ namespace MediaBrowser.Api.Library
private readonly ITVSeriesManager _tvManager;
private readonly ILibraryMonitor _libraryMonitor;
private readonly IFileSystem _fileSystem;
+ private readonly IServerConfigurationManager _config;
///
/// Initializes a new instance of the class.
///
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;
_libraryManager = libraryManager;
@@ -307,6 +309,7 @@ namespace MediaBrowser.Api.Library
_tvManager = tvManager;
_libraryMonitor = libraryMonitor;
_fileSystem = fileSystem;
+ _config = config;
}
public object Get(GetSimilarItems request)
@@ -377,7 +380,7 @@ namespace MediaBrowser.Api.Library
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,
Logger = Logger,
diff --git a/MediaBrowser.Api/Movies/MoviesService.cs b/MediaBrowser.Api/Movies/MoviesService.cs
index 66f2fac812..f153a04753 100644
--- a/MediaBrowser.Api/Movies/MoviesService.cs
+++ b/MediaBrowser.Api/Movies/MoviesService.cs
@@ -14,6 +14,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.LiveTv;
namespace MediaBrowser.Api.Movies
@@ -88,6 +89,7 @@ namespace MediaBrowser.Api.Movies
private readonly IItemRepository _itemRepo;
private readonly IDtoService _dtoService;
+ private readonly IServerConfigurationManager _config;
///
/// Initializes a new instance of the class.
@@ -97,13 +99,14 @@ namespace MediaBrowser.Api.Movies
/// The library manager.
/// The item repo.
/// The dto service.
- 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;
_userDataRepository = userDataRepository;
_libraryManager = libraryManager;
_itemRepo = itemRepo;
_dtoService = dtoService;
+ _config = config;
}
///
@@ -146,15 +149,17 @@ namespace MediaBrowser.Api.Movies
(!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
_libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);
+ var itemTypes = new List { typeof(Movie).Name };
+ if (_config.Configuration.EnableExternalContentInSuggestions)
+ {
+ itemTypes.Add(typeof(Trailer).Name);
+ itemTypes.Add(typeof(LiveTvProgram).Name);
+ }
+
var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
{
Limit = request.Limit,
- IncludeItemTypes = new[]
- {
- typeof(Movie).Name,
- typeof(Trailer).Name,
- typeof(LiveTvProgram).Name
- },
+ IncludeItemTypes = itemTypes.ToArray(),
IsMovie = true,
SimilarTo = item,
EnableGroupByMetadataKey = true
@@ -198,14 +203,16 @@ namespace MediaBrowser.Api.Movies
var recentlyPlayedMovies = _libraryManager.GetItemList(query).ToList();
+ var itemTypes = new List { typeof(Movie).Name };
+ if (_config.Configuration.EnableExternalContentInSuggestions)
+ {
+ itemTypes.Add(typeof(Trailer).Name);
+ itemTypes.Add(typeof(LiveTvProgram).Name);
+ }
+
var likedMovies = _libraryManager.GetItemList(new InternalItemsQuery(user)
{
- IncludeItemTypes = new[]
- {
- typeof(Movie).Name,
- typeof(Trailer).Name,
- typeof(LiveTvProgram).Name
- },
+ IncludeItemTypes = itemTypes.ToArray(),
IsMovie = true,
SortBy = new[] { ItemSortBy.Random },
SortOrder = SortOrder.Descending,
@@ -278,6 +285,13 @@ namespace MediaBrowser.Api.Movies
private IEnumerable GetWithDirector(User user, IEnumerable names, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
{
+ var itemTypes = new List { typeof(Movie).Name };
+ if (_config.Configuration.EnableExternalContentInSuggestions)
+ {
+ itemTypes.Add(typeof(Trailer).Name);
+ itemTypes.Add(typeof(LiveTvProgram).Name);
+ }
+
foreach (var name in names)
{
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
Limit = itemLimit + 2,
PersonTypes = new[] { PersonType.Director },
- IncludeItemTypes = new[]
- {
- typeof(Movie).Name,
- typeof(Trailer).Name,
- typeof(LiveTvProgram).Name
- },
+ IncludeItemTypes = itemTypes.ToArray(),
IsMovie = true,
EnableGroupByMetadataKey = true
@@ -314,6 +323,13 @@ namespace MediaBrowser.Api.Movies
private IEnumerable GetWithActor(User user, IEnumerable names, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
{
+ var itemTypes = new List { typeof(Movie).Name };
+ if (_config.Configuration.EnableExternalContentInSuggestions)
+ {
+ itemTypes.Add(typeof(Trailer).Name);
+ itemTypes.Add(typeof(LiveTvProgram).Name);
+ }
+
foreach (var name in names)
{
var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
@@ -321,12 +337,7 @@ namespace MediaBrowser.Api.Movies
Person = name,
// Account for duplicates by imdb id, since the database doesn't support this yet
Limit = itemLimit + 2,
- IncludeItemTypes = new[]
- {
- typeof(Movie).Name,
- typeof(Trailer).Name,
- typeof(LiveTvProgram).Name
- },
+ IncludeItemTypes = itemTypes.ToArray(),
IsMovie = true,
EnableGroupByMetadataKey = true
@@ -349,17 +360,19 @@ namespace MediaBrowser.Api.Movies
private IEnumerable GetSimilarTo(User user, List baselineItems, int itemLimit, DtoOptions dtoOptions, RecommendationType type)
{
+ var itemTypes = new List { typeof(Movie).Name };
+ if (_config.Configuration.EnableExternalContentInSuggestions)
+ {
+ itemTypes.Add(typeof(Trailer).Name);
+ itemTypes.Add(typeof(LiveTvProgram).Name);
+ }
+
foreach (var item in baselineItems)
{
var similar = _libraryManager.GetItemList(new InternalItemsQuery(user)
{
Limit = itemLimit,
- IncludeItemTypes = new[]
- {
- typeof(Movie).Name,
- typeof(Trailer).Name,
- typeof(LiveTvProgram).Name
- },
+ IncludeItemTypes = itemTypes.ToArray(),
IsMovie = true,
SimilarTo = item,
EnableGroupByMetadataKey = true
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index 9022f64a18..b0595b558a 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -205,6 +205,7 @@ namespace MediaBrowser.Model.Configuration
public string[] LocalNetworkAddresses { get; set; }
public string[] CodecsUsed { get; set; }
public bool EnableChannelView { get; set; }
+ public bool EnableExternalContentInSuggestions { get; set; }
///
/// Initializes a new instance of the class.
@@ -218,6 +219,7 @@ namespace MediaBrowser.Model.Configuration
EnableLocalizedGuids = true;
DisplaySpecialsWithinSeasons = true;
+ EnableExternalContentInSuggestions = true;
ImageSavingConvention = ImageSavingConvention.Compatible;
PublicPort = 8096;