TrailersService.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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.Net;
  6. using MediaBrowser.Controller.Persistence;
  7. using ServiceStack;
  8. namespace MediaBrowser.Api.Movies
  9. {
  10. /// <summary>
  11. /// Class GetSimilarTrailers
  12. /// </summary>
  13. [Route("/Trailers/{Id}/Similar", "GET", Summary = "Finds movies and trailers similar to a given trailer.")]
  14. public class GetSimilarTrailers : BaseGetSimilarItemsFromItem
  15. {
  16. }
  17. /// <summary>
  18. /// Class TrailersService
  19. /// </summary>
  20. [Authenticated]
  21. public class TrailersService : BaseApiService
  22. {
  23. /// <summary>
  24. /// The _user manager
  25. /// </summary>
  26. private readonly IUserManager _userManager;
  27. /// <summary>
  28. /// The _user data repository
  29. /// </summary>
  30. private readonly IUserDataManager _userDataRepository;
  31. /// <summary>
  32. /// The _library manager
  33. /// </summary>
  34. private readonly ILibraryManager _libraryManager;
  35. private readonly IItemRepository _itemRepo;
  36. private readonly IDtoService _dtoService;
  37. /// <summary>
  38. /// Initializes a new instance of the <see cref="TrailersService"/> class.
  39. /// </summary>
  40. /// <param name="userManager">The user manager.</param>
  41. /// <param name="userDataRepository">The user data repository.</param>
  42. /// <param name="libraryManager">The library manager.</param>
  43. public TrailersService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService)
  44. {
  45. _userManager = userManager;
  46. _userDataRepository = userDataRepository;
  47. _libraryManager = libraryManager;
  48. _itemRepo = itemRepo;
  49. _dtoService = dtoService;
  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(GetSimilarTrailers request)
  57. {
  58. var result = SimilarItemsHelper.GetSimilarItemsResult(_userManager,
  59. _itemRepo,
  60. _libraryManager,
  61. _userDataRepository,
  62. _dtoService,
  63. Logger,
  64. // Strip out secondary versions
  65. request, item => (item is Movie || item is Trailer) && !((Video)item).PrimaryVersionId.HasValue,
  66. SimilarItemsHelper.GetSimiliarityScore);
  67. return ToOptimizedSerializedResultUsingCache(result);
  68. }
  69. }
  70. }