MoviesService.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. /// <summary>
  40. /// Initializes a new instance of the <see cref="MoviesService"/> class.
  41. /// </summary>
  42. /// <param name="userManager">The user manager.</param>
  43. /// <param name="userDataRepository">The user data repository.</param>
  44. /// <param name="libraryManager">The library manager.</param>
  45. public MoviesService(IUserManager userManager, IUserDataRepository userDataRepository, ILibraryManager libraryManager)
  46. {
  47. _userManager = userManager;
  48. _userDataRepository = userDataRepository;
  49. _libraryManager = libraryManager;
  50. }
  51. /// <summary>
  52. /// Gets the specified request.
  53. /// </summary>
  54. /// <param name="request">The request.</param>
  55. /// <returns>System.Object.</returns>
  56. public object Get(GetSimilarMovies request)
  57. {
  58. var result = SimilarItemsHelper.GetSimilarItems(_userManager,
  59. _libraryManager,
  60. _userDataRepository,
  61. Logger,
  62. request, item => item is Movie || (item is Trailer && request.IncludeTrailers),
  63. SimilarItemsHelper.GetSimiliarityScore);
  64. return ToOptimizedResult(result);
  65. }
  66. }
  67. }