MoviesService.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using MediaBrowser.Controller.Dto;
  2. using MediaBrowser.Controller.Entities;
  3. using MediaBrowser.Controller.Entities.Movies;
  4. using MediaBrowser.Controller.Library;
  5. using MediaBrowser.Controller.Persistence;
  6. using ServiceStack;
  7. namespace MediaBrowser.Api
  8. {
  9. /// <summary>
  10. /// Class GetSimilarMovies
  11. /// </summary>
  12. [Route("/Movies/{Id}/Similar", "GET")]
  13. [Api(Description = "Finds movies and trailers similar to a given movie.")]
  14. public class GetSimilarMovies : BaseGetSimilarItemsFromItem
  15. {
  16. [ApiMember(Name = "IncludeTrailers", Description = "Whether or not to include trailers within the results. Defaults to true.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
  17. public bool IncludeTrailers { get; set; }
  18. public GetSimilarMovies()
  19. {
  20. IncludeTrailers = true;
  21. }
  22. }
  23. /// <summary>
  24. /// Class MoviesService
  25. /// </summary>
  26. public class MoviesService : BaseApiService
  27. {
  28. /// <summary>
  29. /// The _user manager
  30. /// </summary>
  31. private readonly IUserManager _userManager;
  32. /// <summary>
  33. /// The _user data repository
  34. /// </summary>
  35. private readonly IUserDataManager _userDataRepository;
  36. /// <summary>
  37. /// The _library manager
  38. /// </summary>
  39. private readonly ILibraryManager _libraryManager;
  40. private readonly IItemRepository _itemRepo;
  41. private readonly IDtoService _dtoService;
  42. /// <summary>
  43. /// Initializes a new instance of the <see cref="MoviesService"/> class.
  44. /// </summary>
  45. /// <param name="userManager">The user manager.</param>
  46. /// <param name="userDataRepository">The user data repository.</param>
  47. /// <param name="libraryManager">The library manager.</param>
  48. public MoviesService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService)
  49. {
  50. _userManager = userManager;
  51. _userDataRepository = userDataRepository;
  52. _libraryManager = libraryManager;
  53. _itemRepo = itemRepo;
  54. _dtoService = dtoService;
  55. }
  56. /// <summary>
  57. /// Gets the specified request.
  58. /// </summary>
  59. /// <param name="request">The request.</param>
  60. /// <returns>System.Object.</returns>
  61. public object Get(GetSimilarMovies request)
  62. {
  63. var result = SimilarItemsHelper.GetSimilarItemsResult(_userManager,
  64. _itemRepo,
  65. _libraryManager,
  66. _userDataRepository,
  67. _dtoService,
  68. Logger,
  69. request, item => item is Movie || (item is Trailer && request.IncludeTrailers),
  70. SimilarItemsHelper.GetSimiliarityScore);
  71. return ToOptimizedResult(result);
  72. }
  73. }
  74. }