diff options
Diffstat (limited to 'MediaBrowser.Api/SimilarItemsHelper.cs')
| -rw-r--r-- | MediaBrowser.Api/SimilarItemsHelper.cs | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/MediaBrowser.Api/SimilarItemsHelper.cs b/MediaBrowser.Api/SimilarItemsHelper.cs index 277bba1dd..a1e47bd8f 100644 --- a/MediaBrowser.Api/SimilarItemsHelper.cs +++ b/MediaBrowser.Api/SimilarItemsHelper.cs @@ -9,6 +9,8 @@ using ServiceStack; using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; +using MediaBrowser.Model.Dto; namespace MediaBrowser.Api { @@ -23,6 +25,8 @@ namespace MediaBrowser.Api /// <value>The id.</value> [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] public string Id { get; set; } + + public string ExcludeArtistIds { get; set; } } public class BaseGetSimilarItems : IReturn<ItemsResult>, IHasItemFields @@ -54,7 +58,7 @@ namespace MediaBrowser.Api /// </summary> public static class SimilarItemsHelper { - internal static ItemsResult GetSimilarItemsResult(DtoOptions dtoOptions, IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataManager userDataRepository, IDtoService dtoService, ILogger logger, BaseGetSimilarItemsFromItem request, Type[] includeTypes, Func<BaseItem, List<PersonInfo>, List<PersonInfo>, BaseItem, int> getSimilarityScore) + internal static async Task<QueryResult<BaseItemDto>> GetSimilarItemsResult(DtoOptions dtoOptions, IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataManager userDataRepository, IDtoService dtoService, ILogger logger, BaseGetSimilarItemsFromItem request, Type[] includeTypes, Func<BaseItem, List<PersonInfo>, List<PersonInfo>, BaseItem, int> getSimilarityScore) { var user = !string.IsNullOrWhiteSpace(request.UserId) ? userManager.GetUserById(request.UserId) : null; @@ -68,6 +72,12 @@ namespace MediaBrowser.Api Recursive = true }; + // ExcludeArtistIds + if (!string.IsNullOrEmpty(request.ExcludeArtistIds)) + { + query.ExcludeArtistIds = request.ExcludeArtistIds.Split('|'); + } + var inputItems = libraryManager.GetItemList(query); var items = GetSimilaritems(item, libraryManager, inputItems, getSimilarityScore) @@ -80,14 +90,14 @@ namespace MediaBrowser.Api returnItems = returnItems.Take(request.Limit.Value); } - var result = new ItemsResult + var dtos = await dtoService.GetBaseItemDtos(returnItems, dtoOptions, user).ConfigureAwait(false); + + return new QueryResult<BaseItemDto> { - Items = dtoService.GetBaseItemDtos(returnItems, dtoOptions, user).ToArray(), + Items = dtos.ToArray(), TotalRecordCount = items.Count }; - - return result; } /// <summary> @@ -116,24 +126,12 @@ namespace MediaBrowser.Api private static IEnumerable<string> GetTags(BaseItem item) { - var hasTags = item as IHasTags; - if (hasTags != null) - { - return hasTags.Tags; - } - - return new List<string>(); + return item.Tags; } private static IEnumerable<string> GetKeywords(BaseItem item) { - var hasTags = item as IHasKeywords; - if (hasTags != null) - { - return hasTags.Keywords; - } - - return new List<string>(); + return item.Keywords; } /// <summary> |
