diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-05-21 03:25:49 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-05-21 03:25:49 -0400 |
| commit | da77b058172e1c7cdeb6dadd6106ea3fdd739544 (patch) | |
| tree | 570215d192714f18170558e6664bcab539a7b07c /MediaBrowser.Controller | |
| parent | ead88d3b65c8bd1023d6915af0aed1c703e21979 (diff) | |
update data queries
Diffstat (limited to 'MediaBrowser.Controller')
22 files changed, 183 insertions, 207 deletions
diff --git a/MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs b/MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs index 70ac08343..cfb3a97ee 100644 --- a/MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs +++ b/MediaBrowser.Controller/Drawing/ImageProcessingOptions.cs @@ -10,6 +10,8 @@ namespace MediaBrowser.Controller.Drawing { public class ImageProcessingOptions { + public string ItemId { get; set; } + public string ItemType { get; set; } public IHasImages Item { get; set; } public ItemImageInfo Image { get; set; } diff --git a/MediaBrowser.Controller/Dto/DtoOptions.cs b/MediaBrowser.Controller/Dto/DtoOptions.cs index e69b64948..b9d9d7dda 100644 --- a/MediaBrowser.Controller/Dto/DtoOptions.cs +++ b/MediaBrowser.Controller/Dto/DtoOptions.cs @@ -23,17 +23,28 @@ namespace MediaBrowser.Controller.Dto public bool AddCurrentProgram { get; set; } public DtoOptions() + : this(true) + { + } + + public DtoOptions(bool allFields) { - Fields = new List<ItemFields>(); ImageTypeLimit = int.MaxValue; EnableImages = true; EnableUserData = true; AddCurrentProgram = true; - Fields = Enum.GetNames(typeof (ItemFields)) - .Select(i => (ItemFields) Enum.Parse(typeof (ItemFields), i, true)) - .Except(DefaultExcludedFields) - .ToList(); + if (allFields) + { + Fields = Enum.GetNames(typeof(ItemFields)) + .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) + .Except(DefaultExcludedFields) + .ToList(); + } + else + { + Fields = new List<ItemFields>(); + } ImageTypes = Enum.GetNames(typeof(ImageType)) .Select(i => (ImageType)Enum.Parse(typeof(ImageType), i, true)) diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index 8d83f8a35..b0b9493a5 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -266,20 +266,6 @@ namespace MediaBrowser.Controller.Entities.Audio return info; } - public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) - { - return inputItems.Where(GetItemFilter()); - } - - public Func<BaseItem, bool> GetItemFilter() - { - return i => - { - var hasArtist = i as IHasArtist; - return hasArtist != null && hasArtist.HasAnyArtist(Name); - }; - } - [IgnoreDataMember] public override bool SupportsPeople { diff --git a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs index 2f99e530e..d4a85b4d0 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs @@ -91,16 +91,6 @@ namespace MediaBrowser.Controller.Entities.Audio } } - public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) - { - return inputItems.Where(GetItemFilter()); - } - - public Func<BaseItem, bool> GetItemFilter() - { - return i => i is IHasMusicGenres && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase); - } - [IgnoreDataMember] public override bool SupportsPeople { diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 999f6db3f..1fe7dd3f6 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -22,6 +22,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Extensions; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Sorting; @@ -186,10 +187,15 @@ namespace MediaBrowser.Controller.Entities } set { + var isSortNameDefault = IsSortNameDefault(SortName); + _name = value; - // lazy load this again - _sortName = null; + if (isSortNameDefault) + { + // lazy load this again + SortName = null; + } } } @@ -580,7 +586,6 @@ namespace MediaBrowser.Controller.Entities } } - private string _forcedSortName; /// <summary> /// Gets or sets the name of the forced sort. /// </summary> @@ -588,8 +593,42 @@ namespace MediaBrowser.Controller.Entities [IgnoreDataMember] public string ForcedSortName { - get { return _forcedSortName; } - set { _forcedSortName = value; _sortName = null; } + get + { + var sortName = SortName; + + if (string.IsNullOrWhiteSpace(sortName)) + { + return null; + } + + if (string.Equals(sortName, CreateSortName(), StringComparison.OrdinalIgnoreCase)) + { + return null; + } + + return sortName; + } + set + { + if (string.IsNullOrWhiteSpace(value)) + { + SortName = null; + } + else + { + var newValue = CreateSortNameFromCustomValue(value); + + if (string.Equals(newValue, CreateSortName(), StringComparison.OrdinalIgnoreCase)) + { + SortName = null; + } + else + { + SortName = newValue; + } + } + } } private string _sortName; @@ -604,15 +643,7 @@ namespace MediaBrowser.Controller.Entities { if (_sortName == null) { - if (!string.IsNullOrWhiteSpace(ForcedSortName)) - { - // Need the ToLower because that's what CreateSortName does - _sortName = ModifySortChunks(ForcedSortName).ToLower(); - } - else - { - _sortName = CreateSortName(); - } + _sortName = CreateSortName(); } return _sortName; } @@ -622,6 +653,21 @@ namespace MediaBrowser.Controller.Entities } } + private string CreateSortNameFromCustomValue(string value) + { + return string.IsNullOrWhiteSpace(value) ? null : ModifySortChunks(value).ToLower(); + } + + public bool IsSortNameDefault(string value) + { + if (string.IsNullOrWhiteSpace(value)) + { + return true; + } + + return string.Equals(CreateSortNameFromCustomValue(value), CreateSortName(), StringComparison.OrdinalIgnoreCase); + } + public string GetInternalMetadataPath() { var basePath = ConfigurationManager.ApplicationPaths.InternalMetadataPath; @@ -1303,7 +1349,6 @@ namespace MediaBrowser.Controller.Entities public void AfterMetadataRefresh() { - _sortName = null; } /// <summary> @@ -2187,8 +2232,6 @@ namespace MediaBrowser.Controller.Entities /// </summary> public virtual bool BeforeMetadataRefresh() { - _sortName = null; - var hasChanges = false; if (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Path)) @@ -2210,7 +2253,7 @@ namespace MediaBrowser.Controller.Entities return path; } - public virtual Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, List<ItemFields> itemFields) + public virtual Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, List<ItemFields> fields) { if (RunTimeTicks.HasValue) { diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index edac27f99..b18d47a65 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -12,6 +12,7 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.IO; using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; @@ -672,7 +673,8 @@ namespace MediaBrowser.Controller.Entities return ItemRepository.GetItemList(new InternalItemsQuery { ParentId = Id, - GroupByPresentationUniqueKey = false + GroupByPresentationUniqueKey = false, + DtoOptions = new DtoOptions(true) }); } @@ -690,7 +692,11 @@ namespace MediaBrowser.Controller.Entities { Recursive = false, Limit = 0, - ParentId = Id + ParentId = Id, + DtoOptions = new DtoOptions(false) + { + EnableImages = false + } }).Result; @@ -705,7 +711,11 @@ namespace MediaBrowser.Controller.Entities IsFolder = false, IsVirtualItem = false, EnableTotalRecordCount = true, - Limit = 0 + Limit = 0, + DtoOptions = new DtoOptions(false) + { + EnableImages = false + } }).Result.TotalRecordCount; } @@ -1481,7 +1491,7 @@ namespace MediaBrowser.Controller.Entities } } - public override async Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, List<ItemFields> itemFields) + public override async Task FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, List<ItemFields> fields) { if (!SupportsUserDataFromChildren) { @@ -1490,7 +1500,7 @@ namespace MediaBrowser.Controller.Entities if (itemDto != null) { - if (itemFields.Contains(ItemFields.RecursiveItemCount)) + if (fields.Contains(ItemFields.RecursiveItemCount)) { itemDto.RecursiveItemCount = GetRecursiveChildCount(user); } @@ -1505,7 +1515,11 @@ namespace MediaBrowser.Controller.Entities IsVirtualItem = false, EnableTotalRecordCount = true, Limit = 0, - IsPlayed = false + IsPlayed = false, + DtoOptions = new DtoOptions(false) + { + EnableImages = false + } }).ConfigureAwait(false); diff --git a/MediaBrowser.Controller/Entities/GameGenre.cs b/MediaBrowser.Controller/Entities/GameGenre.cs index 093b191b6..836020d88 100644 --- a/MediaBrowser.Controller/Entities/GameGenre.cs +++ b/MediaBrowser.Controller/Entities/GameGenre.cs @@ -69,16 +69,6 @@ namespace MediaBrowser.Controller.Entities return false; } - public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) - { - return inputItems.Where(GetItemFilter()); - } - - public Func<BaseItem, bool> GetItemFilter() - { - return i => i is Game && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase); - } - public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query) { query.GenreIds = new[] { Id.ToString("N") }; diff --git a/MediaBrowser.Controller/Entities/Genre.cs b/MediaBrowser.Controller/Entities/Genre.cs index 6569a1e6c..4b70eae58 100644 --- a/MediaBrowser.Controller/Entities/Genre.cs +++ b/MediaBrowser.Controller/Entities/Genre.cs @@ -81,16 +81,6 @@ namespace MediaBrowser.Controller.Entities } } - public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) - { - return inputItems.Where(GetItemFilter()); - } - - public Func<BaseItem, bool> GetItemFilter() - { - return i => !(i is Game) && !(i is IHasMusicGenres) && i.Genres.Contains(Name, StringComparer.OrdinalIgnoreCase); - } - public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query) { query.GenreIds = new[] { Id.ToString("N") }; diff --git a/MediaBrowser.Controller/Entities/IItemByName.cs b/MediaBrowser.Controller/Entities/IItemByName.cs index b69c8bdfc..a02ca1c0c 100644 --- a/MediaBrowser.Controller/Entities/IItemByName.cs +++ b/MediaBrowser.Controller/Entities/IItemByName.cs @@ -7,13 +7,6 @@ namespace MediaBrowser.Controller.Entities /// </summary> public interface IItemByName : IHasMetadata { - /// <summary> - /// Gets the tagged items. - /// </summary> - /// <param name="inputItems">The input items.</param> - /// <returns>IEnumerable{BaseItem}.</returns> - IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems); - IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query); } diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 3c948487d..f029d36fd 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -166,26 +166,31 @@ namespace MediaBrowser.Controller.Entities switch (name) { - case ItemFields.ThemeSongIds: - case ItemFields.ThemeVideoIds: - case ItemFields.ProductionLocations: - case ItemFields.Keywords: - case ItemFields.Taglines: - case ItemFields.CustomRating: - case ItemFields.DateCreated: - case ItemFields.SortName: - case ItemFields.Overview: case ItemFields.HomePageUrl: - case ItemFields.VoteCount: + case ItemFields.Keywords: case ItemFields.DisplayMediaType: - //case ItemFields.ServiceName: - case ItemFields.Genres: - case ItemFields.Studios: + case ItemFields.VoteCount: + case ItemFields.CustomRating: + case ItemFields.ProductionLocations: case ItemFields.Settings: case ItemFields.OriginalTitle: + case ItemFields.Taglines: + case ItemFields.SortName: + case ItemFields.Studios: case ItemFields.Tags: + case ItemFields.ThemeSongIds: + case ItemFields.ThemeVideoIds: + case ItemFields.DateCreated: + case ItemFields.Overview: + case ItemFields.Genres: case ItemFields.DateLastMediaAdded: - return fields.Count == 0 || fields.Contains(name); + case ItemFields.ExternalEtag: + case ItemFields.PresentationUniqueKey: + case ItemFields.InheritedParentalRatingValue: + case ItemFields.ExternalSeriesId: + return fields.Contains(name); + case ItemFields.ServiceName: + return true; default: return true; } diff --git a/MediaBrowser.Controller/Entities/Person.cs b/MediaBrowser.Controller/Entities/Person.cs index 005fb2014..20d9c7999 100644 --- a/MediaBrowser.Controller/Entities/Person.cs +++ b/MediaBrowser.Controller/Entities/Person.cs @@ -93,22 +93,6 @@ namespace MediaBrowser.Controller.Entities } } - public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) - { - var itemsWithPerson = LibraryManager.GetItemIds(new InternalItemsQuery - { - PersonIds = new[] { Id.ToString("N") } - }); - - return inputItems.Where(i => itemsWithPerson.Contains(i.Id)); - } - - - public Func<BaseItem, bool> GetItemFilter() - { - return i => LibraryManager.GetPeople(i).Any(p => string.Equals(p.Name, Name, StringComparison.OrdinalIgnoreCase)); - } - [IgnoreDataMember] public override bool SupportsPeople { diff --git a/MediaBrowser.Controller/Entities/Studio.cs b/MediaBrowser.Controller/Entities/Studio.cs index 2e5e6ce43..8cb65c60a 100644 --- a/MediaBrowser.Controller/Entities/Studio.cs +++ b/MediaBrowser.Controller/Entities/Studio.cs @@ -88,16 +88,6 @@ namespace MediaBrowser.Controller.Entities } } - public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) - { - return inputItems.Where(GetItemFilter()); - } - - public Func<BaseItem, bool> GetItemFilter() - { - return i => i.Studios.Contains(Name, StringComparer.OrdinalIgnoreCase); - } - public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query) { query.StudioIds = new[] { Id.ToString("N") }; diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index ed04b5ddc..af1b6d53c 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -5,6 +5,7 @@ using MediaBrowser.Model.Users; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using MediaBrowser.Controller.Dto; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Serialization; @@ -160,7 +161,7 @@ namespace MediaBrowser.Controller.Entities.TV Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager); - var items = GetEpisodes(user).Where(filter); + var items = GetEpisodes(user, query.DtoOptions).Where(filter); var result = PostFilterAndSort(items, query, false, false); @@ -170,21 +171,19 @@ namespace MediaBrowser.Controller.Entities.TV /// <summary> /// Gets the episodes. /// </summary> - /// <param name="user">The user.</param> - /// <returns>IEnumerable{Episode}.</returns> - public IEnumerable<Episode> GetEpisodes(User user) + public IEnumerable<Episode> GetEpisodes(User user, DtoOptions options) { - return GetEpisodes(Series, user); + return GetEpisodes(Series, user, options); } - public IEnumerable<Episode> GetEpisodes(Series series, User user) + public IEnumerable<Episode> GetEpisodes(Series series, User user, DtoOptions options) { - return GetEpisodes(series, user, null); + return GetEpisodes(series, user, null, options); } - public IEnumerable<Episode> GetEpisodes(Series series, User user, IEnumerable<Episode> allSeriesEpisodes) + public IEnumerable<Episode> GetEpisodes(Series series, User user, IEnumerable<Episode> allSeriesEpisodes, DtoOptions options) { - return series.GetSeasonEpisodes(this, user, allSeriesEpisodes); + return series.GetSeasonEpisodes(this, user, allSeriesEpisodes, options); } public IEnumerable<Episode> GetEpisodes() @@ -194,7 +193,7 @@ namespace MediaBrowser.Controller.Entities.TV public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) { - return GetEpisodes(user); + return GetEpisodes(user, new DtoOptions(true)); } protected override bool GetBlockUnratedValue(UserPolicy config) diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 7641c9523..f75a78c97 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Dto; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Providers; using MediaBrowser.Model.Serialization; @@ -250,12 +251,15 @@ namespace MediaBrowser.Controller.Entities.TV public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) { - return GetSeasons(user); + return GetSeasons(user, new DtoOptions(true)); } - public IEnumerable<Season> GetSeasons(User user) + public IEnumerable<Season> GetSeasons(User user, DtoOptions options) { - var query = new InternalItemsQuery(user); + var query = new InternalItemsQuery(user) + { + DtoOptions = options + }; SetSeasonQueryOptions(query, user); @@ -321,7 +325,7 @@ namespace MediaBrowser.Controller.Entities.TV return Task.FromResult(LibraryManager.GetItemsResult(query)); } - public IEnumerable<Episode> GetEpisodes(User user) + public IEnumerable<Episode> GetEpisodes(User user, DtoOptions options) { var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; var seriesKey = GetUniqueSeriesKey(this); @@ -331,7 +335,8 @@ namespace MediaBrowser.Controller.Entities.TV AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey, SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null, IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name }, - SortBy = new[] { ItemSortBy.SortName } + SortBy = new[] { ItemSortBy.SortName }, + DtoOptions = options }; var config = user.Configuration; if (!config.DisplayMissingEpisodes && !config.DisplayUnairedEpisodes) @@ -352,7 +357,7 @@ namespace MediaBrowser.Controller.Entities.TV var allSeriesEpisodes = allItems.OfType<Episode>().ToList(); var allEpisodes = allItems.OfType<Season>() - .SelectMany(i => i.GetEpisodes(this, user, allSeriesEpisodes)) + .SelectMany(i => i.GetEpisodes(this, user, allSeriesEpisodes, options)) .Reverse() .ToList(); @@ -429,7 +434,7 @@ namespace MediaBrowser.Controller.Entities.TV progress.Report(100); } - public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user) + public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, DtoOptions options) { var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey; @@ -445,7 +450,8 @@ namespace MediaBrowser.Controller.Entities.TV AncestorWithPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? null : seriesKey, SeriesPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? seriesKey : null, IncludeItemTypes = new[] { typeof(Episode).Name }, - SortBy = new[] { ItemSortBy.SortName } + SortBy = new[] { ItemSortBy.SortName }, + DtoOptions = options }; if (user != null) { @@ -466,14 +472,14 @@ namespace MediaBrowser.Controller.Entities.TV var allItems = LibraryManager.GetItemList(query).OfType<Episode>(); - return GetSeasonEpisodes(parentSeason, user, allItems); + return GetSeasonEpisodes(parentSeason, user, allItems, options); } - public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, IEnumerable<Episode> allSeriesEpisodes) + public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, IEnumerable<Episode> allSeriesEpisodes, DtoOptions options) { if (allSeriesEpisodes == null) { - return GetSeasonEpisodes(parentSeason, user); + return GetSeasonEpisodes(parentSeason, user, options); } var episodes = FilterEpisodesBySeason(allSeriesEpisodes, parentSeason, ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons); diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index 99601b290..ac843d5fb 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using MediaBrowser.Model.Serialization; using System.Threading.Tasks; using System.Linq; +using MediaBrowser.Controller.Dto; namespace MediaBrowser.Controller.Entities { @@ -75,7 +76,8 @@ namespace MediaBrowser.Controller.Entities var result = GetItems(new InternalItemsQuery { User = user, - EnableTotalRecordCount = false + EnableTotalRecordCount = false, + DtoOptions = new DtoOptions(true) }).Result; @@ -100,7 +102,9 @@ namespace MediaBrowser.Controller.Entities Recursive = true, EnableTotalRecordCount = false, - ForceDirect = true + ForceDirect = true, + + DtoOptions = query.DtoOptions }).Result; diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 8da069f62..801d1d783 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -17,6 +17,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities @@ -83,7 +84,7 @@ namespace MediaBrowser.Controller.Entities Limit = query.Limit, StartIndex = query.StartIndex - }, CancellationToken.None).ConfigureAwait(false); + }, new DtoOptions(), CancellationToken.None).ConfigureAwait(false); return GetResult(result); } @@ -110,7 +111,7 @@ namespace MediaBrowser.Controller.Entities Limit = query.Limit, StartIndex = query.StartIndex - }, CancellationToken.None).ConfigureAwait(false); + }, new DtoOptions(), CancellationToken.None).ConfigureAwait(false); return GetResult(result); } @@ -394,7 +395,7 @@ namespace MediaBrowser.Controller.Entities ParentId = parent == null ? null : parent.Id.ToString("N"), GroupItems = true - }).Select(i => i.Item1 ?? i.Item2.FirstOrDefault()).Where(i => i != null); + }, query.DtoOptions).Select(i => i.Item1 ?? i.Item2.FirstOrDefault()).Where(i => i != null); query.SortBy = new string[] { }; @@ -662,7 +663,7 @@ namespace MediaBrowser.Controller.Entities StartIndex = query.StartIndex, UserId = query.User.Id.ToString("N") - }, parentFolders); + }, parentFolders, query.DtoOptions); return result; } @@ -1783,7 +1784,7 @@ namespace MediaBrowser.Controller.Entities Status = RecordingStatus.Completed, UserId = user.Id.ToString("N") - }, CancellationToken.None).ConfigureAwait(false); + }, new DtoOptions(), CancellationToken.None).ConfigureAwait(false); } var list = new List<BaseItem>(); diff --git a/MediaBrowser.Controller/Entities/Year.cs b/MediaBrowser.Controller/Entities/Year.cs index b352950a0..61b1a3b1a 100644 --- a/MediaBrowser.Controller/Entities/Year.cs +++ b/MediaBrowser.Controller/Entities/Year.cs @@ -65,20 +65,6 @@ namespace MediaBrowser.Controller.Entities return true; } - public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) - { - int year; - - var usCulture = new CultureInfo("en-US"); - - if (!int.TryParse(Name, NumberStyles.Integer, usCulture, out year)) - { - return inputItems; - } - - return inputItems.Where(i => i.ProductionYear.HasValue && i.ProductionYear.Value == year); - } - public IEnumerable<BaseItem> GetTaggedItems(InternalItemsQuery query) { int year; @@ -107,12 +93,6 @@ namespace MediaBrowser.Controller.Entities return null; } - public Func<BaseItem, bool> GetItemFilter() - { - var val = GetYearValue(); - return i => i.ProductionYear.HasValue && val.HasValue && i.ProductionYear.Value == val.Value; - } - [IgnoreDataMember] public override bool SupportsPeople { diff --git a/MediaBrowser.Controller/Library/IMusicManager.cs b/MediaBrowser.Controller/Library/IMusicManager.cs index 9baf8b6f1..95ba671b4 100644 --- a/MediaBrowser.Controller/Library/IMusicManager.cs +++ b/MediaBrowser.Controller/Library/IMusicManager.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using System.Collections.Generic; +using MediaBrowser.Controller.Dto; namespace MediaBrowser.Controller.Library { @@ -9,23 +10,16 @@ namespace MediaBrowser.Controller.Library /// <summary> /// Gets the instant mix from song. /// </summary> - /// <param name="item">The item.</param> - /// <param name="user">The user.</param> - /// <returns>IEnumerable{Audio}.</returns> - IEnumerable<Audio> GetInstantMixFromItem(BaseItem item, User user); + IEnumerable<Audio> GetInstantMixFromItem(BaseItem item, User user, DtoOptions dtoOptions); + /// <summary> /// Gets the instant mix from artist. /// </summary> - /// <param name="artist">The artist.</param> - /// <param name="user">The user.</param> - /// <returns>IEnumerable{Audio}.</returns> - IEnumerable<Audio> GetInstantMixFromArtist(MusicArtist artist, User user); + IEnumerable<Audio> GetInstantMixFromArtist(MusicArtist artist, User user, DtoOptions dtoOptions); + /// <summary> /// Gets the instant mix from genre. /// </summary> - /// <param name="genres">The genres.</param> - /// <param name="user">The user.</param> - /// <returns>IEnumerable{Audio}.</returns> - IEnumerable<Audio> GetInstantMixFromGenres(IEnumerable<string> genres, User user); + IEnumerable<Audio> GetInstantMixFromGenres(IEnumerable<string> genres, User user, DtoOptions dtoOptions); } } diff --git a/MediaBrowser.Controller/Library/IUserViewManager.cs b/MediaBrowser.Controller/Library/IUserViewManager.cs index 5391d113e..b46ece49d 100644 --- a/MediaBrowser.Controller/Library/IUserViewManager.cs +++ b/MediaBrowser.Controller/Library/IUserViewManager.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Dto; namespace MediaBrowser.Controller.Library { @@ -16,6 +17,6 @@ namespace MediaBrowser.Controller.Library Task<UserView> GetUserSubView(string category, string type, string sortName, CancellationToken cancellationToken); - List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request); + List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request, DtoOptions options); } } diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index 7e1dab462..288b30278 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -284,19 +284,12 @@ namespace MediaBrowser.Controller.LiveTv /// <summary> /// Gets the internal channels. /// </summary> - /// <param name="query">The query.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task<QueryResult<LiveTvChannel>>.</returns> - Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, - CancellationToken cancellationToken); + Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken); /// <summary> /// Gets the internal recordings. /// </summary> - /// <param name="query">The query.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task<QueryResult<BaseItem>>.</returns> - Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, CancellationToken cancellationToken); + Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken); /// <summary> /// Gets the recording media sources. diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs index fb1410f4a..73c3b9a25 100644 --- a/MediaBrowser.Controller/Playlists/Playlist.cs +++ b/MediaBrowser.Controller/Playlists/Playlist.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Linq; using MediaBrowser.Model.Serialization; using System.Threading.Tasks; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Providers; namespace MediaBrowser.Controller.Playlists @@ -81,7 +82,7 @@ namespace MediaBrowser.Controller.Playlists public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) { - return GetPlayableItems(user).Result; + return GetPlayableItems(user, new DtoOptions(true)).Result; } protected override IEnumerable<BaseItem> GetNonCachedChildren(IDirectoryService directoryService) @@ -91,7 +92,7 @@ namespace MediaBrowser.Controller.Playlists public override IEnumerable<BaseItem> GetRecursiveChildren(User user, InternalItemsQuery query) { - var items = GetPlayableItems(user).Result; + var items = GetPlayableItems(user, query.DtoOptions).Result; if (query != null) { @@ -106,12 +107,12 @@ namespace MediaBrowser.Controller.Playlists return GetLinkedChildrenInfos(); } - private Task<IEnumerable<BaseItem>> GetPlayableItems(User user) + private Task<IEnumerable<BaseItem>> GetPlayableItems(User user, DtoOptions options) { - return GetPlaylistItems(MediaType, base.GetChildren(user, true), user); + return GetPlaylistItems(MediaType, base.GetChildren(user, true), user, options); } - public static async Task<IEnumerable<BaseItem>> GetPlaylistItems(string playlistMediaType, IEnumerable<BaseItem> inputItems, User user) + public static async Task<IEnumerable<BaseItem>> GetPlaylistItems(string playlistMediaType, IEnumerable<BaseItem> inputItems, User user, DtoOptions options) { if (user != null) { @@ -122,14 +123,14 @@ namespace MediaBrowser.Controller.Playlists foreach (var item in inputItems) { - var playlistItems = await GetPlaylistItems(item, user, playlistMediaType).ConfigureAwait(false); + var playlistItems = await GetPlaylistItems(item, user, playlistMediaType, options).ConfigureAwait(false); list.AddRange(playlistItems); } return list; } - private static async Task<IEnumerable<BaseItem>> GetPlaylistItems(BaseItem item, User user, string mediaType) + private static async Task<IEnumerable<BaseItem>> GetPlaylistItems(BaseItem item, User user, string mediaType, DtoOptions options) { var musicGenre = item as MusicGenre; if (musicGenre != null) @@ -140,7 +141,8 @@ namespace MediaBrowser.Controller.Playlists IncludeItemTypes = new[] { typeof(Audio).Name }, GenreIds = new[] { musicGenre.Id.ToString("N") }, SortBy = new[] { ItemSortBy.AlbumArtist, ItemSortBy.Album, ItemSortBy.SortName }, - SortOrder = SortOrder.Ascending + SortOrder = SortOrder.Ascending, + DtoOptions = options }); } @@ -153,7 +155,8 @@ namespace MediaBrowser.Controller.Playlists IncludeItemTypes = new[] { typeof(Audio).Name }, ArtistIds = new[] { musicArtist.Id.ToString("N") }, SortBy = new[] { ItemSortBy.AlbumArtist, ItemSortBy.Album, ItemSortBy.SortName }, - SortOrder = SortOrder.Ascending + SortOrder = SortOrder.Ascending, + DtoOptions = options }); } @@ -166,7 +169,8 @@ namespace MediaBrowser.Controller.Playlists IsFolder = false, SortBy = new[] { ItemSortBy.SortName }, MediaTypes = new[] { mediaType }, - EnableTotalRecordCount = false + EnableTotalRecordCount = false, + DtoOptions = options }; var itemsResult = await folder.GetItems(query).ConfigureAwait(false); diff --git a/MediaBrowser.Controller/TV/ITVSeriesManager.cs b/MediaBrowser.Controller/TV/ITVSeriesManager.cs index 771fa602a..0bcb9ae5b 100644 --- a/MediaBrowser.Controller/TV/ITVSeriesManager.cs +++ b/MediaBrowser.Controller/TV/ITVSeriesManager.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Querying; using System.Collections.Generic; +using MediaBrowser.Controller.Dto; namespace MediaBrowser.Controller.TV { @@ -9,16 +10,11 @@ namespace MediaBrowser.Controller.TV /// <summary> /// Gets the next up. /// </summary> - /// <param name="query">The query.</param> - /// <returns>QueryResult<BaseItem>.</returns> - QueryResult<BaseItem> GetNextUp(NextUpQuery query); + QueryResult<BaseItem> GetNextUp(NextUpQuery query, DtoOptions options); /// <summary> /// Gets the next up. /// </summary> - /// <param name="request">The request.</param> - /// <param name="parentsFolders">The parents folders.</param> - /// <returns>QueryResult<BaseItem>.</returns> - QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders); + QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders, DtoOptions options); } } |
