diff options
| author | Tim Hobbs <jesus.tesh@gmail.com> | 2014-03-20 01:58:16 -0700 |
|---|---|---|
| committer | Tim Hobbs <jesus.tesh@gmail.com> | 2014-03-20 01:58:16 -0700 |
| commit | 436d10bef946299f67109daa91eff5cc1325f9ff (patch) | |
| tree | 84e22e9f7482c7a8f1914f2aaef76198ebc7109c /MediaBrowser.Server.Implementations | |
| parent | 97c38fbe8228cb2b1dff27aa2e0d8d48464801cb (diff) | |
| parent | b762d98fc45f875775e0c60c63a3b157776becdd (diff) | |
Merge upstream/master
Diffstat (limited to 'MediaBrowser.Server.Implementations')
4 files changed, 36 insertions, 9 deletions
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index 22b7e7054..ae5bf7716 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -208,8 +208,8 @@ namespace MediaBrowser.Server.Implementations.Channels var query = new InternalChannelItemQuery { - User = user, - CategoryId = categoryId + User = user, + CategoryId = categoryId }; var result = await channel.GetChannelItems(query, cancellationToken).ConfigureAwait(false); @@ -236,7 +236,7 @@ namespace MediaBrowser.Server.Implementations.Channels var tasks = items.Select(GetChannelItemEntity); var returnItems = await Task.WhenAll(tasks).ConfigureAwait(false); - + returnItems = new BaseItem[] {}; var returnItemArray = returnItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)) .ToArray(); @@ -251,19 +251,25 @@ namespace MediaBrowser.Server.Implementations.Channels { BaseItem item; + Guid id; + if (info.Type == ChannelItemType.Category) { + id = info.Id.GetMBId(typeof(ChannelCategoryItem)); item = new ChannelCategoryItem(); } else if (info.MediaType == ChannelMediaType.Audio) { + id = info.Id.GetMBId(typeof(ChannelCategoryItem)); item = new ChannelAudioItem(); } else { + id = info.Id.GetMBId(typeof(ChannelVideoItem)); item = new ChannelVideoItem(); } + item.Id = id; item.Name = info.Name; item.Genres = info.Genres; item.CommunityRating = info.CommunityRating; diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 19d834c20..a66cb148f 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -651,7 +651,7 @@ namespace MediaBrowser.Server.Implementations.Dto /// <param name="chapterInfo">The chapter info.</param> /// <param name="item">The item.</param> /// <returns>ChapterInfoDto.</returns> - private ChapterInfoDto GetChapterInfoDto(ChapterInfo chapterInfo, BaseItem item) + public ChapterInfoDto GetChapterInfoDto(ChapterInfo chapterInfo, BaseItem item) { var dto = new ChapterInfoDto { @@ -1084,11 +1084,6 @@ namespace MediaBrowser.Server.Implementations.Dto dto.PartCount = video.AdditionalPartIds.Count + 1; dto.AlternateVersionCount = video.AlternateVersionCount; - if (video.PrimaryVersionId.HasValue) - { - dto.PrimaryVersionId = video.PrimaryVersionId.Value.ToString("N"); - } - if (fields.Contains(ItemFields.Chapters)) { dto.Chapters = _itemRepo.GetChapters(video.Id).Select(c => GetChapterInfoDto(c, item)).ToList(); diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 0b1947d4c..91abb6b4f 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -26,6 +26,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MoreLinq; using SortOrder = MediaBrowser.Model.Entities.SortOrder; namespace MediaBrowser.Server.Implementations.Library @@ -540,6 +541,29 @@ namespace MediaBrowser.Server.Implementations.Library return item; } + public IEnumerable<BaseItem> ReplaceVideosWithPrimaryVersions(IEnumerable<BaseItem> items) + { + return items.Select(i => + { + var video = i as Video; + + if (video != null) + { + if (video.PrimaryVersionId.HasValue) + { + var primary = GetItemById(video.PrimaryVersionId.Value) as Video; + + if (primary != null) + { + return primary; + } + } + } + + return i; + + }).DistinctBy(i => i.Id); + } /// <summary> /// Ensure supplied item has only one instance throughout diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index aaafd35a9..f48a4430f 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -35,6 +35,8 @@ namespace MediaBrowser.Server.Implementations.Library var inputItems = user.RootFolder.GetRecursiveChildren(user, null).Where(i => !(i is ICollectionFolder)); + inputItems = _libraryManager.ReplaceVideosWithPrimaryVersions(inputItems); + var results = await GetSearchHints(inputItems, query).ConfigureAwait(false); // Include item types |
