From e441e2f53db0b587c9864fe91d7008a2344d147b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 24 Aug 2017 15:52:19 -0400 Subject: update active recordings --- MediaBrowser.Controller/Drawing/IImageProcessor.cs | 4 +- .../Entities/AggregateFolder.cs | 31 ++++++----- MediaBrowser.Controller/Entities/Audio/Audio.cs | 22 +++++--- .../Entities/Audio/IHasAlbumArtist.cs | 16 ++---- .../Entities/Audio/MusicAlbum.cs | 62 ++++++++++++---------- .../Entities/Audio/MusicArtist.cs | 20 ++++--- .../Entities/Audio/MusicGenre.cs | 1 - MediaBrowser.Controller/Entities/BaseItem.cs | 2 +- MediaBrowser.Controller/Entities/Book.cs | 2 +- .../Entities/CollectionFolder.cs | 26 ++++----- MediaBrowser.Controller/Entities/Game.cs | 1 - MediaBrowser.Controller/Entities/GameGenre.cs | 1 - MediaBrowser.Controller/Entities/Genre.cs | 1 - .../Entities/ICollectionFolder.cs | 2 +- .../Entities/InternalPeopleQuery.cs | 4 +- MediaBrowser.Controller/Entities/Movies/BoxSet.cs | 5 +- MediaBrowser.Controller/Entities/MusicVideo.cs | 6 +-- MediaBrowser.Controller/Entities/PeopleHelper.cs | 10 +++- MediaBrowser.Controller/Entities/Person.cs | 1 - MediaBrowser.Controller/Entities/Photo.cs | 12 ++++- MediaBrowser.Controller/Entities/Studio.cs | 1 - MediaBrowser.Controller/Entities/TV/Season.cs | 2 +- MediaBrowser.Controller/Entities/TV/Series.cs | 10 +++- MediaBrowser.Controller/Entities/User.cs | 19 +++++-- MediaBrowser.Controller/Entities/UserRootFolder.cs | 2 +- MediaBrowser.Controller/Entities/UserView.cs | 4 +- MediaBrowser.Controller/Entities/Year.cs | 1 - MediaBrowser.Controller/IO/FileData.cs | 11 +++- MediaBrowser.Controller/Library/ItemResolveArgs.cs | 14 +++-- MediaBrowser.Controller/Library/NameExtensions.cs | 44 --------------- .../LiveTv/LiveTvAudioRecording.cs | 1 - MediaBrowser.Controller/LiveTv/LiveTvProgram.cs | 1 - .../LiveTv/LiveTvVideoRecording.cs | 1 - .../Providers/DirectoryService.cs | 16 ++++-- .../Providers/IDirectoryService.cs | 2 +- .../Providers/MetadataResult.cs | 11 +++- MediaBrowser.Controller/Providers/SongInfo.cs | 5 +- MediaBrowser.Controller/Session/SessionInfo.cs | 15 +++++- 38 files changed, 215 insertions(+), 174 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Drawing/IImageProcessor.cs b/MediaBrowser.Controller/Drawing/IImageProcessor.cs index 29363f492..113f823f5 100644 --- a/MediaBrowser.Controller/Drawing/IImageProcessor.cs +++ b/MediaBrowser.Controller/Drawing/IImageProcessor.cs @@ -24,7 +24,7 @@ namespace MediaBrowser.Controller.Drawing /// Gets the image enhancers. /// /// The image enhancers. - IEnumerable ImageEnhancers { get; } + IImageEnhancer[] ImageEnhancers { get; } /// /// Gets the size of the image. @@ -54,7 +54,7 @@ namespace MediaBrowser.Controller.Drawing /// The item. /// Type of the image. /// IEnumerable{IImageEnhancer}. - IEnumerable GetSupportedEnhancers(IHasMetadata item, ImageType imageType); + List GetSupportedEnhancers(IHasMetadata item, ImageType imageType); /// /// Gets the image cache tag. diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs index db84d6e2f..2105ef907 100644 --- a/MediaBrowser.Controller/Entities/AggregateFolder.cs +++ b/MediaBrowser.Controller/Entities/AggregateFolder.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.Controller.Entities { public AggregateFolder() { - PhysicalLocationsList = new List(); + PhysicalLocationsList = EmptyStringArray; } [IgnoreDataMember] @@ -58,7 +58,7 @@ namespace MediaBrowser.Controller.Entities } [IgnoreDataMember] - public override IEnumerable PhysicalLocations + public override string[] PhysicalLocations { get { @@ -66,23 +66,23 @@ namespace MediaBrowser.Controller.Entities } } - public List PhysicalLocationsList { get; set; } + public string[] PhysicalLocationsList { get; set; } protected override FileSystemMetadata[] GetFileSystemChildren(IDirectoryService directoryService) { - return CreateResolveArgs(directoryService, true).FileSystemChildren.ToArray(); + return CreateResolveArgs(directoryService, true).FileSystemChildren; } - private List _childrenIds = null; + private Guid[] _childrenIds = null; private readonly object _childIdsLock = new object(); protected override List LoadChildren() { lock (_childIdsLock) { - if (_childrenIds == null || _childrenIds.Count == 0) + if (_childrenIds == null || _childrenIds.Length == 0) { - var list = base.LoadChildren().ToList(); - _childrenIds = list.Select(i => i.Id).ToList(); + var list = base.LoadChildren(); + _childrenIds = list.Select(i => i.Id).ToArray(); return list; } @@ -105,9 +105,9 @@ namespace MediaBrowser.Controller.Entities if (!changed) { - var locations = PhysicalLocations.ToList(); + var locations = PhysicalLocations; - var newLocations = CreateResolveArgs(new DirectoryService(Logger, FileSystem), false).PhysicalLocations.ToList(); + var newLocations = CreateResolveArgs(new DirectoryService(Logger, FileSystem), false).PhysicalLocations; if (!locations.SequenceEqual(newLocations)) { @@ -163,7 +163,7 @@ namespace MediaBrowser.Controller.Entities _requiresRefresh = _requiresRefresh || !args.PhysicalLocations.SequenceEqual(PhysicalLocations); if (setPhysicalLocations) { - PhysicalLocationsList = args.PhysicalLocations.ToList(); + PhysicalLocationsList = args.PhysicalLocations; } return args; @@ -212,7 +212,14 @@ namespace MediaBrowser.Controller.Entities throw new ArgumentNullException("id"); } - return _virtualChildren.FirstOrDefault(i => i.Id == id); + foreach (var child in _virtualChildren) + { + if (child.Id == id) + { + return child; + } + } + return null; } } } diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 0781dc35b..e029a447e 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -29,7 +29,7 @@ namespace MediaBrowser.Controller.Entities.Audio /// /// The artist. [IgnoreDataMember] - public List Artists { get; set; } + public string[] Artists { get; set; } [IgnoreDataMember] public string[] AlbumArtists { get; set; } @@ -42,7 +42,7 @@ namespace MediaBrowser.Controller.Entities.Audio public Audio() { - Artists = new List(); + Artists = EmptyStringArray; AlbumArtists = EmptyStringArray; } @@ -98,13 +98,23 @@ namespace MediaBrowser.Controller.Entities.Audio } [IgnoreDataMember] - public List AllArtists + public string[] AllArtists { get { - var list = AlbumArtists.ToList(); + var list = new string[AlbumArtists.Length + Artists.Length]; - list.AddRange(Artists); + var index = 0; + foreach (var artist in AlbumArtists) + { + list[index] = artist; + index++; + } + foreach (var artist in AlbumArtists) + { + list[index] = artist; + index++; + } return list; @@ -160,7 +170,7 @@ namespace MediaBrowser.Controller.Entities.Audio songKey = Album + "-" + songKey; } - var albumArtist = AlbumArtists.FirstOrDefault(); + var albumArtist = AlbumArtists.Length == 0 ? null : AlbumArtists[0]; if (!string.IsNullOrWhiteSpace(albumArtist)) { songKey = albumArtist + "-" + songKey; diff --git a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs index 6900699e5..b2dedada4 100644 --- a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs @@ -1,6 +1,4 @@ -using MediaBrowser.Controller.Library; -using System.Collections.Generic; - + namespace MediaBrowser.Controller.Entities.Audio { public interface IHasAlbumArtist @@ -10,16 +8,8 @@ namespace MediaBrowser.Controller.Entities.Audio public interface IHasArtist { - List AllArtists { get; } - - List Artists { get; set; } - } + string[] AllArtists { get; } - public static class HasArtistExtensions - { - public static bool HasAnyArtist(this IHasArtist hasArtist, string artist) - { - return NameExtensions.EqualsAny(hasArtist.AllArtists, artist); - } + string[] Artists { get; set; } } } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index c35e81826..82f880b3f 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -10,7 +10,6 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Dto; namespace MediaBrowser.Controller.Entities.Audio { @@ -20,11 +19,11 @@ namespace MediaBrowser.Controller.Entities.Audio public class MusicAlbum : Folder, IHasAlbumArtist, IHasArtist, IHasMusicGenres, IHasLookupInfo, IMetadataContainer { public string[] AlbumArtists { get; set; } - public List Artists { get; set; } + public string[] Artists { get; set; } public MusicAlbum() { - Artists = new List(); + Artists = EmptyStringArray; AlbumArtists = EmptyStringArray; } @@ -48,17 +47,22 @@ namespace MediaBrowser.Controller.Entities.Audio public MusicArtist GetMusicArtist(DtoOptions options) { - var artist = GetParents().OfType().FirstOrDefault(); - - if (artist == null) + var parents = GetParents(); + foreach (var parent in parents) { - var name = AlbumArtist; - if (!string.IsNullOrWhiteSpace(name)) + var artist = parent as MusicArtist; + if (artist != null) { - artist = LibraryManager.GetArtist(name, options); + return artist; } } - return artist; + + var name = AlbumArtist; + if (!string.IsNullOrWhiteSpace(name)) + { + return LibraryManager.GetArtist(name, options); + } + return null; } [IgnoreDataMember] @@ -80,23 +84,32 @@ namespace MediaBrowser.Controller.Entities.Audio } [IgnoreDataMember] - public List AllArtists + public string[] AllArtists { get { - var list = AlbumArtists.ToList(); + var list = new string[AlbumArtists.Length + Artists.Length]; - list.AddRange(Artists); + var index = 0; + foreach (var artist in AlbumArtists) + { + list[index] = artist; + index++; + } + foreach (var artist in AlbumArtists) + { + list[index] = artist; + index++; + } return list; - } } [IgnoreDataMember] public string AlbumArtist { - get { return AlbumArtists.FirstOrDefault(); } + get { return AlbumArtists.Length == 0 ? null : AlbumArtists[0]; } } [IgnoreDataMember] @@ -110,11 +123,11 @@ namespace MediaBrowser.Controller.Entities.Audio /// /// The tracks. [IgnoreDataMember] - public IEnumerable