|
@@ -1,4 +1,7 @@
|
|
|
-using MediaBrowser.Controller.Activity;
|
|
|
+using MediaBrowser.Api.Movies;
|
|
|
+using MediaBrowser.Api.Music;
|
|
|
+using MediaBrowser.Controller.Activity;
|
|
|
+using MediaBrowser.Controller.Channels;
|
|
|
using MediaBrowser.Controller.Dto;
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
using MediaBrowser.Controller.Entities.Audio;
|
|
@@ -9,7 +12,9 @@ using MediaBrowser.Controller.LiveTv;
|
|
|
using MediaBrowser.Controller.Localization;
|
|
|
using MediaBrowser.Controller.Net;
|
|
|
using MediaBrowser.Controller.Persistence;
|
|
|
+using MediaBrowser.Controller.TV;
|
|
|
using MediaBrowser.Model.Activity;
|
|
|
+using MediaBrowser.Model.Channels;
|
|
|
using MediaBrowser.Model.Dto;
|
|
|
using MediaBrowser.Model.Entities;
|
|
|
using MediaBrowser.Model.Querying;
|
|
@@ -238,6 +243,12 @@ namespace MediaBrowser.Api.Library
|
|
|
public string Id { get; set; }
|
|
|
}
|
|
|
|
|
|
+ [Route("/Items/{Id}/Similar", "GET", Summary = "Downloads item media")]
|
|
|
+ [Authenticated(Roles = "download")]
|
|
|
+ public class GetSimilarItems : BaseGetSimilarItemsFromItem
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Class LibraryService
|
|
|
/// </summary>
|
|
@@ -257,12 +268,14 @@ namespace MediaBrowser.Api.Library
|
|
|
private readonly IActivityManager _activityManager;
|
|
|
private readonly ILocalizationManager _localization;
|
|
|
private readonly ILiveTvManager _liveTv;
|
|
|
+ private readonly IChannelManager _channelManager;
|
|
|
+ private readonly ITVSeriesManager _tvManager;
|
|
|
|
|
|
/// <summary>
|
|
|
/// Initializes a new instance of the <see cref="LibraryService" /> class.
|
|
|
/// </summary>
|
|
|
public LibraryService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager,
|
|
|
- IDtoService dtoService, IUserDataManager userDataManager, IAuthorizationContext authContext, IActivityManager activityManager, ILocalizationManager localization, ILiveTvManager liveTv)
|
|
|
+ IDtoService dtoService, IUserDataManager userDataManager, IAuthorizationContext authContext, IActivityManager activityManager, ILocalizationManager localization, ILiveTvManager liveTv, IChannelManager channelManager, ITVSeriesManager tvManager)
|
|
|
{
|
|
|
_itemRepo = itemRepo;
|
|
|
_libraryManager = libraryManager;
|
|
@@ -273,6 +286,115 @@ namespace MediaBrowser.Api.Library
|
|
|
_activityManager = activityManager;
|
|
|
_localization = localization;
|
|
|
_liveTv = liveTv;
|
|
|
+ _channelManager = channelManager;
|
|
|
+ _tvManager = tvManager;
|
|
|
+ }
|
|
|
+
|
|
|
+ public object Get(GetSimilarItems request)
|
|
|
+ {
|
|
|
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
|
|
|
+
|
|
|
+ var item = string.IsNullOrEmpty(request.Id) ?
|
|
|
+ (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
|
|
|
+ _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);
|
|
|
+
|
|
|
+ if (item is Game)
|
|
|
+ {
|
|
|
+ return new GamesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService)
|
|
|
+ {
|
|
|
+ AuthorizationContext = AuthorizationContext,
|
|
|
+ Logger = Logger,
|
|
|
+ Request = Request,
|
|
|
+ SessionContext = SessionContext,
|
|
|
+ ResultFactory = ResultFactory
|
|
|
+
|
|
|
+ }.Get(new GetSimilarGames
|
|
|
+ {
|
|
|
+ Fields = request.Fields,
|
|
|
+ Id = request.Id,
|
|
|
+ Limit = request.Limit,
|
|
|
+ UserId = request.UserId
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (item is MusicAlbum)
|
|
|
+ {
|
|
|
+ return new AlbumsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService)
|
|
|
+ {
|
|
|
+ AuthorizationContext = AuthorizationContext,
|
|
|
+ Logger = Logger,
|
|
|
+ Request = Request,
|
|
|
+ SessionContext = SessionContext,
|
|
|
+ ResultFactory = ResultFactory
|
|
|
+
|
|
|
+ }.Get(new GetSimilarAlbums
|
|
|
+ {
|
|
|
+ Fields = request.Fields,
|
|
|
+ Id = request.Id,
|
|
|
+ Limit = request.Limit,
|
|
|
+ UserId = request.UserId
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (item is MusicArtist)
|
|
|
+ {
|
|
|
+ return new AlbumsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService)
|
|
|
+ {
|
|
|
+ AuthorizationContext = AuthorizationContext,
|
|
|
+ Logger = Logger,
|
|
|
+ Request = Request,
|
|
|
+ SessionContext = SessionContext,
|
|
|
+ ResultFactory = ResultFactory
|
|
|
+
|
|
|
+ }.Get(new GetSimilarArtists
|
|
|
+ {
|
|
|
+ Fields = request.Fields,
|
|
|
+ Id = request.Id,
|
|
|
+ Limit = request.Limit,
|
|
|
+ UserId = request.UserId
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ var program = item as IHasProgramAttributes;
|
|
|
+ var channelItem = item as ChannelVideoItem;
|
|
|
+
|
|
|
+ if (item is Movie || (program != null && program.IsMovie) || (channelItem != null && channelItem.ContentType == ChannelMediaContentType.Movie && channelItem.ContentType == ChannelMediaContentType.MovieExtra))
|
|
|
+ {
|
|
|
+ return new MoviesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _channelManager)
|
|
|
+ {
|
|
|
+ AuthorizationContext = AuthorizationContext,
|
|
|
+ Logger = Logger,
|
|
|
+ Request = Request,
|
|
|
+ SessionContext = SessionContext,
|
|
|
+ ResultFactory = ResultFactory
|
|
|
+
|
|
|
+ }.Get(new GetSimilarMovies
|
|
|
+ {
|
|
|
+ Fields = request.Fields,
|
|
|
+ Id = request.Id,
|
|
|
+ Limit = request.Limit,
|
|
|
+ UserId = request.UserId
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (item is Series || (program != null && program.IsSeries) || (channelItem != null && channelItem.ContentType == ChannelMediaContentType.Episode))
|
|
|
+ {
|
|
|
+ return new TvShowsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _tvManager)
|
|
|
+ {
|
|
|
+ AuthorizationContext = AuthorizationContext,
|
|
|
+ Logger = Logger,
|
|
|
+ Request = Request,
|
|
|
+ SessionContext = SessionContext,
|
|
|
+ ResultFactory = ResultFactory
|
|
|
+
|
|
|
+ }.Get(new GetSimilarShows
|
|
|
+ {
|
|
|
+ Fields = request.Fields,
|
|
|
+ Id = request.Id,
|
|
|
+ Limit = request.Limit,
|
|
|
+ UserId = request.UserId
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ return new ItemsResult();
|
|
|
}
|
|
|
|
|
|
public object Get(GetMediaFolders request)
|