MoviesService.cs 2.7 KB

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