diff --git a/MediaBrowser.Api/SearchService.cs b/MediaBrowser.Api/SearchService.cs index a3d2285297..d8aad5283a 100644 --- a/MediaBrowser.Api/SearchService.cs +++ b/MediaBrowser.Api/SearchService.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.Api /// [Route("/Search/Hints", "GET")] [Api(Description = "Gets search hints based on a search term")] - public class GetSearchHints : IReturn> + public class GetSearchHints : IReturn { /// /// Skips over a given number of items within the results. Use for paging. @@ -96,7 +96,7 @@ namespace MediaBrowser.Api /// /// The request. /// Task{IEnumerable{SearchHintResult}}. - private async Task> GetSearchHintsAsync(GetSearchHints request) + private async Task GetSearchHintsAsync(GetSearchHints request) { IEnumerable inputItems; @@ -113,34 +113,48 @@ namespace MediaBrowser.Api var results = await _searchEngine.GetSearchHints(inputItems, request.SearchTerm).ConfigureAwait(false); + var searchResultArray = results.ToArray(); + + IEnumerable returnResults = searchResultArray; + if (request.StartIndex.HasValue) { - results = results.Skip(request.StartIndex.Value); + returnResults = returnResults.Skip(request.StartIndex.Value); } if (request.Limit.HasValue) { - results = results.Take(request.Limit.Value); + returnResults = returnResults.Take(request.Limit.Value); } - return results.Select(GetSearchHintResult); + return new SearchHintResult + { + TotalRecordCount = searchResultArray.Length, + + SearchHints = returnResults.Select(GetSearchHintResult).ToArray() + }; } /// /// Gets the search hint result. /// - /// The item. + /// The hint info. /// SearchHintResult. - private SearchHintResult GetSearchHintResult(BaseItem item) + private SearchHint GetSearchHintResult(SearchHintInfo hintInfo) { - var result = new SearchHintResult + var item = hintInfo.Item; + + var result = new SearchHint { Name = item.Name, IndexNumber = item.IndexNumber, ParentIndexNumber = item.ParentIndexNumber, ItemId = DtoBuilder.GetClientItemId(item), Type = item.GetType().Name, - MediaType = item.MediaType + MediaType = item.MediaType, + MatchedTerm = hintInfo.MatchedTerm, + DisplayMediaType = item.DisplayMediaType, + RunTimeTicks = item.RunTimeTicks }; if (item.HasImage(ImageType.Primary)) @@ -160,14 +174,25 @@ namespace MediaBrowser.Api if (season != null) { result.Series = season.Series.Name; + + result.EpisodeCount = season.RecursiveChildren.OfType().Count(); + } + + var series = item as Series; + + if (series != null) + { + result.EpisodeCount = series.RecursiveChildren.OfType().Count(); } var album = item as MusicAlbum; if (album != null) { - var songs = album.Children.OfType