diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-10-22 16:31:23 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-22 16:31:23 -0400 |
| commit | 165b4c2fb8868045cd9dae3f00280e1c7b513acb (patch) | |
| tree | 47a53e6922e3061c7228daa73fb21b72b1e2806e /MediaBrowser.Controller/Entities | |
| parent | 3c1114228ba3b6a19cb73fa7f9aaa4e3ce3cab80 (diff) | |
| parent | ce47beba842dc026483dc3649a1efb8c34b30662 (diff) | |
Merge pull request #2251 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Controller/Entities')
| -rw-r--r-- | MediaBrowser.Controller/Entities/CollectionFolder.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Season.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Series.cs | 16 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/User.cs | 16 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 175 |
5 files changed, 91 insertions, 131 deletions
diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index 41e277b7c..414b2b2c3 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -11,8 +11,8 @@ using System.Threading.Tasks; using CommonIO; using MediaBrowser.Controller.Configuration; using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Serialization; -using MoreLinq; namespace MediaBrowser.Controller.Entities { @@ -29,7 +29,7 @@ namespace MediaBrowser.Controller.Entities PhysicalLocationsList = new List<string>(); } - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] protected override bool SupportsShortcutChildren { get @@ -38,7 +38,7 @@ namespace MediaBrowser.Controller.Entities } } - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public override bool SupportsPlayedStatus { get @@ -129,7 +129,7 @@ namespace MediaBrowser.Controller.Entities /// Allow different display preferences for each collection folder /// </summary> /// <value>The display prefs id.</value> - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public override Guid DisplayPreferencesId { get @@ -138,7 +138,7 @@ namespace MediaBrowser.Controller.Entities } } - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public override IEnumerable<string> PhysicalLocations { get @@ -283,7 +283,7 @@ namespace MediaBrowser.Controller.Entities /// Our children are actually just references to the ones in the physical root... /// </summary> /// <value>The actual children.</value> - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] protected override IEnumerable<BaseItem> ActualChildren { get { return GetActualChildren(); } @@ -322,7 +322,7 @@ namespace MediaBrowser.Controller.Entities return result; } - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public override bool SupportsPeople { get diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index ce13f5fc5..fa713c5ca 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -2,7 +2,6 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Querying; using MediaBrowser.Model.Users; -using MoreLinq; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 39703f67a..df464b52a 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -9,8 +9,8 @@ using System.Linq; using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Providers; -using MoreLinq; namespace MediaBrowser.Controller.Entities.TV { @@ -106,6 +106,12 @@ namespace MediaBrowser.Controller.Entities.TV private string AddLibrariesToPresentationUniqueKey(string key) { + var lang = GetPreferredMetadataLanguage(); + if (!string.IsNullOrWhiteSpace(lang)) + { + key += "-" + lang; + } + var folders = LibraryManager.GetCollectionFolders(this) .Select(i => i.Id.ToString("N")) .ToArray(); @@ -209,8 +215,8 @@ namespace MediaBrowser.Controller.Entities.TV var query = new InternalItemsQuery(user) { AncestorWithPresentationUniqueKey = seriesKey, - IncludeItemTypes = new[] {typeof (Season).Name}, - SortBy = new[] {ItemSortBy.SortName} + IncludeItemTypes = new[] { typeof(Season).Name }, + SortBy = new[] { ItemSortBy.SortName } }; if (!config.DisplayMissingEpisodes && !config.DisplayUnairedEpisodes) @@ -267,8 +273,8 @@ namespace MediaBrowser.Controller.Entities.TV var query = new InternalItemsQuery(user) { AncestorWithPresentationUniqueKey = seriesKey, - IncludeItemTypes = new[] {typeof (Episode).Name, typeof (Season).Name}, - SortBy = new[] {ItemSortBy.SortName} + IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name }, + SortBy = new[] { ItemSortBy.SortName } }; var config = user.Configuration; if (!config.DisplayMissingEpisodes && !config.DisplayUnairedEpisodes) diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs index 46da469fa..00320e9b7 100644 --- a/MediaBrowser.Controller/Entities/User.cs +++ b/MediaBrowser.Controller/Entities/User.cs @@ -42,7 +42,7 @@ namespace MediaBrowser.Controller.Entities /// Gets or sets the path. /// </summary> /// <value>The path.</value> - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public override string Path { get @@ -81,7 +81,7 @@ namespace MediaBrowser.Controller.Entities /// If the item is a folder, it returns the folder itself /// </summary> /// <value>The containing folder path.</value> - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public override string ContainingFolderPath { get @@ -94,7 +94,7 @@ namespace MediaBrowser.Controller.Entities /// Gets a value indicating whether this instance is owned item. /// </summary> /// <value><c>true</c> if this instance is owned item; otherwise, <c>false</c>.</value> - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public override bool IsOwnedItem { get @@ -107,7 +107,7 @@ namespace MediaBrowser.Controller.Entities /// Gets the root folder. /// </summary> /// <value>The root folder.</value> - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public Folder RootFolder { get @@ -129,7 +129,7 @@ namespace MediaBrowser.Controller.Entities private volatile UserConfiguration _config; private readonly object _configSyncLock = new object(); - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public UserConfiguration Configuration { get @@ -152,7 +152,7 @@ namespace MediaBrowser.Controller.Entities private volatile UserPolicy _policy; private readonly object _policySyncLock = new object(); - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public UserPolicy Policy { get @@ -232,7 +232,7 @@ namespace MediaBrowser.Controller.Entities /// Gets the path to the user's configuration directory /// </summary> /// <value>The configuration directory path.</value> - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public string ConfigurationDirectoryPath { get @@ -308,7 +308,7 @@ namespace MediaBrowser.Controller.Entities return Configuration.GroupedFolders.Select(i => new Guid(i)).Contains(id); } - [IgnoreDataMember] + [System.Runtime.Serialization.IgnoreDataMember] public override bool SupportsPeople { get diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 38397572e..9debdf9ba 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -17,7 +17,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Configuration; -using MoreLinq; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities { @@ -201,7 +201,7 @@ namespace MediaBrowser.Controller.Entities return await GetMusicFolders(queryParent, user, query).ConfigureAwait(false); case SpecialFolder.MusicGenres: - return await GetMusicGenres(queryParent, user, query).ConfigureAwait(false); + return GetMusicGenres(queryParent, user, query); case SpecialFolder.MusicGenre: return await GetMusicGenreItems(queryParent, displayParent, user, query).ConfigureAwait(false); @@ -290,32 +290,20 @@ namespace MediaBrowser.Controller.Entities return GetResult(list, parent, query); } - private async Task<QueryResult<BaseItem>> GetMusicGenres(Folder parent, User user, InternalItemsQuery query) + private QueryResult<BaseItem> GetMusicGenres(Folder parent, User user, InternalItemsQuery query) { - var tasks = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }) - .Where(i => !i.IsFolder) - .SelectMany(i => i.Genres) - .DistinctNames() - .Select(i => - { - try - { - return _libraryManager.GetMusicGenre(i); - } - catch - { - // Full exception logged at lower levels - _logger.Error("Error getting genre"); - return null; - } - - }) - .Where(i => i != null) - .Select(i => GetUserView(i.Name, SpecialFolder.MusicGenre, i.SortName, parent)); - - var genres = await Task.WhenAll(tasks).ConfigureAwait(false); + var result = _libraryManager.GetMusicGenres(new InternalItemsQuery(user) + { + AncestorIds = new[] { parent.Id.ToString("N") }, + StartIndex = query.StartIndex, + Limit = query.Limit + }); - return GetResult(genres, parent, query); + return new QueryResult<BaseItem> + { + TotalRecordCount = result.TotalRecordCount, + Items = result.Items.Select(i => i.Item1).ToArray() + }; } private async Task<QueryResult<BaseItem>> GetMusicGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query) @@ -332,50 +320,51 @@ namespace MediaBrowser.Controller.Entities private QueryResult<BaseItem> GetMusicAlbumArtists(Folder parent, User user, InternalItemsQuery query) { - var items = parent.QueryRecursive(new InternalItemsQuery(user) + var artists = _libraryManager.GetAlbumArtists(new InternalItemsQuery(user) { - Recursive = true, - ParentId = parent.Id, - IncludeItemTypes = new[] { typeof(Audio.Audio).Name }, - EnableTotalRecordCount = false - - }).Items.Cast<IHasAlbumArtist>(); - - var artists = _libraryManager.GetAlbumArtists(items); + AncestorIds = new[] { parent.Id.ToString("N") }, + StartIndex = query.StartIndex, + Limit = query.Limit + }); - return GetResult(artists, parent, query); + return new QueryResult<BaseItem> + { + TotalRecordCount = artists.TotalRecordCount, + Items = artists.Items.Select(i => i.Item1).ToArray() + }; } private QueryResult<BaseItem> GetMusicArtists(Folder parent, User user, InternalItemsQuery query) { - var items = parent.QueryRecursive(new InternalItemsQuery(user) + var artists = _libraryManager.GetArtists(new InternalItemsQuery(user) { - Recursive = true, - ParentId = parent.Id, - IncludeItemTypes = new[] { typeof(Audio.Audio).Name, typeof(MusicVideo).Name }, - EnableTotalRecordCount = false - - }).Items.Cast<IHasArtist>(); - - var artists = _libraryManager.GetArtists(items); + AncestorIds = new[] { parent.Id.ToString("N") }, + StartIndex = query.StartIndex, + Limit = query.Limit + }); - return GetResult(artists, parent, query); + return new QueryResult<BaseItem> + { + TotalRecordCount = artists.TotalRecordCount, + Items = artists.Items.Select(i => i.Item1).ToArray() + }; } private QueryResult<BaseItem> GetFavoriteArtists(Folder parent, User user, InternalItemsQuery query) { - var items = parent.QueryRecursive(new InternalItemsQuery(user) + var artists = _libraryManager.GetArtists(new InternalItemsQuery(user) { - Recursive = true, - ParentId = parent.Id, - IncludeItemTypes = new[] { typeof(Audio.Audio).Name }, - EnableTotalRecordCount = false - - }).Items.Cast<IHasAlbumArtist>(); - - var artists = _libraryManager.GetAlbumArtists(items).Where(i => _userDataManager.GetUserData(user, i).IsFavorite); + AncestorIds = new[] { parent.Id.ToString("N") }, + StartIndex = query.StartIndex, + Limit = query.Limit, + IsFavorite = true + }); - return GetResult(artists, parent, query); + return new QueryResult<BaseItem> + { + TotalRecordCount = artists.TotalRecordCount, + Items = artists.Items.Select(i => i.Item1).ToArray() + }; } private QueryResult<BaseItem> GetMusicPlaylists(Folder parent, User user, InternalItemsQuery query) @@ -577,35 +566,18 @@ namespace MediaBrowser.Controller.Entities private async Task<QueryResult<BaseItem>> GetMovieGenres(Folder parent, User user, InternalItemsQuery query) { - var tasks = parent.QueryRecursive(new InternalItemsQuery(user) + var result = _libraryManager.GetGenres(new InternalItemsQuery(user) { - IncludeItemTypes = new[] { typeof(Movie).Name }, - Recursive = true, - EnableTotalRecordCount = false - - }).Items - .SelectMany(i => i.Genres) - .DistinctNames() - .Select(i => - { - try - { - return _libraryManager.GetGenre(i); - } - catch - { - // Full exception logged at lower levels - _logger.Error("Error getting genre"); - return null; - } - - }) - .Where(i => i != null) - .Select(i => GetUserView(i.Name, SpecialFolder.MovieGenre, i.SortName, parent)); - - var genres = await Task.WhenAll(tasks).ConfigureAwait(false); + AncestorIds = new[] { parent.Id.ToString("N") }, + StartIndex = query.StartIndex, + Limit = query.Limit + }); - return GetResult(genres, parent, query); + return new QueryResult<BaseItem> + { + TotalRecordCount = result.TotalRecordCount, + Items = result.Items.Select(i => i.Item1).ToArray() + }; } private async Task<QueryResult<BaseItem>> GetMovieGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query) @@ -720,35 +692,18 @@ namespace MediaBrowser.Controller.Entities private async Task<QueryResult<BaseItem>> GetTvGenres(Folder parent, User user, InternalItemsQuery query) { - var tasks = parent.QueryRecursive(new InternalItemsQuery(user) + var result = _libraryManager.GetGenres(new InternalItemsQuery(user) { - IncludeItemTypes = new[] { typeof(Series).Name }, - Recursive = true, - EnableTotalRecordCount = false - - }).Items - .SelectMany(i => i.Genres) - .DistinctNames() - .Select(i => - { - try - { - return _libraryManager.GetGenre(i); - } - catch - { - // Full exception logged at lower levels - _logger.Error("Error getting genre"); - return null; - } - - }) - .Where(i => i != null) - .Select(i => GetUserView(i.Name, SpecialFolder.TvGenre, i.SortName, parent)); - - var genres = await Task.WhenAll(tasks).ConfigureAwait(false); + AncestorIds = new[] { parent.Id.ToString("N") }, + StartIndex = query.StartIndex, + Limit = query.Limit + }); - return GetResult(genres, parent, query); + return new QueryResult<BaseItem> + { + TotalRecordCount = result.TotalRecordCount, + Items = result.Items.Select(i => i.Item1).ToArray() + }; } private QueryResult<BaseItem> GetTvGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query) |
