From 9b1cad3ce05fe68b01750962b29bf5529050dd67 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 19 Mar 2016 23:38:02 -0400 Subject: [PATCH] update trailers --- MediaBrowser.Api/Movies/TrailersService.cs | 79 +++++-------------- MediaBrowser.Api/UserLibrary/ItemsService.cs | 82 -------------------- MediaBrowser.Controller/Entities/Trailer.cs | 6 ++ 3 files changed, 27 insertions(+), 140 deletions(-) diff --git a/MediaBrowser.Api/Movies/TrailersService.cs b/MediaBrowser.Api/Movies/TrailersService.cs index 39c7b7f446..4883b38fb0 100644 --- a/MediaBrowser.Api/Movies/TrailersService.cs +++ b/MediaBrowser.Api/Movies/TrailersService.cs @@ -12,6 +12,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Collections; +using MediaBrowser.Controller.Localization; +using MediaBrowser.Model.Serialization; namespace MediaBrowser.Api.Movies { @@ -41,77 +44,37 @@ namespace MediaBrowser.Api.Movies private readonly ILibraryManager _libraryManager; private readonly IDtoService _dtoService; - private readonly IChannelManager _channelManager; + private readonly ICollectionManager _collectionManager; + private readonly ILocalizationManager _localizationManager; + private readonly IJsonSerializer _json; - /// - /// Initializes a new instance of the class. - /// - /// The user manager. - /// The user data repository. - /// The library manager. - public TrailersService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IDtoService dtoService, IChannelManager channelManager) + public TrailersService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IDtoService dtoService, ICollectionManager collectionManager, ILocalizationManager localizationManager, IJsonSerializer json) { _userManager = userManager; _userDataRepository = userDataRepository; _libraryManager = libraryManager; _dtoService = dtoService; - _channelManager = channelManager; + _collectionManager = collectionManager; + _localizationManager = localizationManager; + _json = json; } - public async Task Get(Getrailers request) + public object Get(Getrailers request) { - var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; - var result = await GetAllTrailers(user).ConfigureAwait(false); - - IEnumerable items = result.Items; - - // Apply filters - // Run them starting with the ones that are likely to reduce the list the most - foreach (var filter in request.GetFilters().OrderByDescending(f => (int)f)) - { - items = ItemsService.ApplyFilter(items, filter, user, _userDataRepository); - } + var json = _json.SerializeToString(request); + var getItems = _json.DeserializeFromString(json); - items = _libraryManager.Sort(items, user, request.GetOrderBy(), request.SortOrder ?? SortOrder.Ascending); + getItems.IncludeItemTypes = "Trailer"; - var itemsArray = items.ToList(); - - var pagedItems = ApplyPaging(request, itemsArray); - - var dtoOptions = GetDtoOptions(request); - - var returnItems = _dtoService.GetBaseItemDtos(pagedItems, dtoOptions, user).ToArray(); - - return new ItemsResult + return new ItemsService(_userManager, _libraryManager, _userDataRepository, _localizationManager, _dtoService, _collectionManager) { - TotalRecordCount = itemsArray.Count, - Items = returnItems - }; - } + AuthorizationContext = AuthorizationContext, + Logger = Logger, + Request = Request, + ResultFactory = ResultFactory, + SessionContext = SessionContext - private IEnumerable ApplyPaging(Getrailers request, IEnumerable items) - { - // Start at - if (request.StartIndex.HasValue) - { - items = items.Skip(request.StartIndex.Value); - } - - // Return limit - if (request.Limit.HasValue) - { - items = items.Take(request.Limit.Value); - } - - return items; - } - - private async Task> GetAllTrailers(User user) - { - return _libraryManager.GetItems(new InternalItemsQuery(user) - { - IncludeItemTypes = new[] {typeof (Trailer).Name} - }); + }.Get(getItems); } } } diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 761d107603..93e123dea5 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -281,88 +281,6 @@ namespace MediaBrowser.Api.UserLibrary return query; } - /// - /// Applies filtering - /// - /// The items. - /// The filter. - /// The user. - /// The repository. - /// IEnumerable{BaseItem}. - internal static IEnumerable ApplyFilter(IEnumerable items, ItemFilter filter, User user, IUserDataManager repository) - { - // Avoid implicitly captured closure - var currentUser = user; - - switch (filter) - { - case ItemFilter.IsFavoriteOrLikes: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - if (userdata == null) - { - return false; - } - - var likes = userdata.Likes ?? false; - var favorite = userdata.IsFavorite; - - return likes || favorite; - }); - - case ItemFilter.Likes: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.Likes.HasValue && userdata.Likes.Value; - }); - - case ItemFilter.Dislikes: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.Likes.HasValue && !userdata.Likes.Value; - }); - - case ItemFilter.IsFavorite: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.IsFavorite; - }); - - case ItemFilter.IsResumable: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.PlaybackPositionTicks > 0; - }); - - case ItemFilter.IsPlayed: - return items.Where(item => item.IsPlayed(currentUser)); - - case ItemFilter.IsUnplayed: - return items.Where(item => item.IsUnplayed(currentUser)); - - case ItemFilter.IsFolder: - return items.Where(item => item.IsFolder); - - case ItemFilter.IsNotFolder: - return items.Where(item => !item.IsFolder); - - case ItemFilter.IsRecentlyAdded: - return items.Where(item => (DateTime.UtcNow - item.DateCreated).TotalDays <= 10); - } - - return items; - } - private bool ApplyAdditionalFilters(GetItems request, BaseItem i, User user, ILibraryManager libraryManager) { // Artists diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index a4ac345453..43d95a8d38 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -35,6 +35,12 @@ namespace MediaBrowser.Controller.Entities public List Keywords { get; set; } + [IgnoreDataMember] + public bool IsLocalTrailer + { + get { return TrailerTypes.Contains(TrailerType.LocalTrailer); } + } + /// /// Gets or sets the taglines. ///