From 60780399c51165a06a04d8a01d59252bc9c82d7f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Sep 2013 22:43:34 -0400 Subject: allow request header overrides --- .../Library/CoreResolutionIgnoreRule.cs | 1 + .../Library/LibraryManager.cs | 8 +++++++ .../Library/Resolvers/Audio/MusicAlbumResolver.cs | 13 +++++++++-- .../Library/Resolvers/Audio/MusicArtistResolver.cs | 8 +++++++ .../Library/Resolvers/Movies/BoxSetResolver.cs | 2 +- .../Library/Resolvers/TV/EpisodeResolver.cs | 7 ++---- .../Library/Resolvers/TV/SeriesResolver.cs | 4 +++- .../Library/UserManager.cs | 26 ---------------------- .../Library/Validators/ArtistsValidator.cs | 26 +++++++++++----------- .../Library/Validators/CountHelpers.cs | 2 +- .../Library/Validators/PeoplePostScanTask.cs | 8 ++----- 11 files changed, 50 insertions(+), 55 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs index c2e87cbd7..ededca314 100644 --- a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs +++ b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs @@ -107,6 +107,7 @@ namespace MediaBrowser.Server.Implementations.Library { if (args.Parent != null) { + // Don't resolve these into audio files if (string.Equals(Path.GetFileNameWithoutExtension(filename), BaseItem.ThemeSongFilename) && EntityResolutionHelper.IsAudioFile(filename)) { return true; diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 5230bb4c3..9b78f3980 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1036,6 +1036,10 @@ namespace MediaBrowser.Server.Implementations.Library { await i.Run(innerProgress, cancellationToken); } + catch (OperationCanceledException) + { + _logger.Info("Pre-scan task cancelled: {0}", i.GetType().Name); + } catch (Exception ex) { _logger.ErrorException("Error running prescan task", ex); @@ -1077,6 +1081,10 @@ namespace MediaBrowser.Server.Implementations.Library { await i.Run(innerProgress, cancellationToken); } + catch (OperationCanceledException) + { + _logger.Info("Post-scan task cancelled: {0}", i.GetType().Name); + } catch (Exception ex) { _logger.ErrorException("Error running postscan task", ex); diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs index 73c26dd64..bf6526538 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs @@ -1,11 +1,12 @@ using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; using System.IO; -using System.Linq; namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio { @@ -37,6 +38,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio if (args.Parent.IsRoot) return null; if (args.Parent is MusicAlbum) return null; + // Optimization + if (args.Parent is BoxSet || args.Parent is Series || args.Parent is Season) + { + return null; + } + var collectionType = args.GetCollectionType(); // If there's a collection type and it's not music, it can't be a series @@ -102,8 +109,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio // If list contains at least 2 audio files or at least one and no video files consider it to contain music var foundAudio = 0; - foreach (var fullName in list.Select(file => file.FullName)) + foreach (var file in list) { + var fullName = file.FullName; + if (EntityResolutionHelper.IsAudioFile(fullName)) foundAudio++; if (foundAudio >= 2) { diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs index 8aafbb0f7..54a32c367 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs @@ -1,4 +1,6 @@ using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; @@ -41,6 +43,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio return null; } + // Optimization + if (args.Parent is BoxSet || args.Parent is Series || args.Parent is Season) + { + return null; + } + var collectionType = args.GetCollectionType(); // If there's a collection type and it's not music, it can't be a series diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs index c2c3335c3..9afeb8eb9 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs @@ -2,9 +2,9 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; using System; using System.IO; -using MediaBrowser.Model.Entities; namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies { diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs index 84d57b972..0a6a72fc1 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV var season = args.Parent as Season; // If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something - if (season != null || args.Parent is Series) + if (season != null) { Episode episode = null; @@ -51,10 +51,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV if (episode != null) { - if (season != null) - { - episode.ParentIndexNumber = season.IndexNumber; - } + episode.ParentIndexNumber = season.IndexNumber; if (episode.ParentIndexNumber == null) { diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs index 5b49ab630..38a3d44bb 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs @@ -1,4 +1,6 @@ using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; @@ -41,7 +43,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV } // Optimization to avoid running these tests against Seasons - if (args.Parent is Series) + if (args.Parent is Series || args.Parent is MusicArtist || args.Parent is MusicAlbum || args.Parent is BoxSet) { return null; } diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index 661916212..04d0f6ab2 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -4,10 +4,8 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; -using MediaBrowser.Controller.Session; using MediaBrowser.Model.Logging; using System; -using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; @@ -23,12 +21,6 @@ namespace MediaBrowser.Server.Implementations.Library /// public class UserManager : IUserManager { - /// - /// The _active connections - /// - private readonly ConcurrentDictionary _activeConnections = - new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); - /// /// The _users /// @@ -64,24 +56,6 @@ namespace MediaBrowser.Server.Implementations.Library } } - /// - /// Gets all connections. - /// - /// All connections. - public IEnumerable AllConnections - { - get { return _activeConnections.Values.OrderByDescending(c => c.LastActivityDate); } - } - - /// - /// Gets the active connections. - /// - /// The active connections. - public IEnumerable RecentConnections - { - get { return AllConnections.Where(c => (DateTime.UtcNow - c.LastActivityDate).TotalMinutes <= 5); } - } - /// /// The _logger /// diff --git a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs index 607f32427..d359d211c 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs @@ -57,10 +57,10 @@ namespace MediaBrowser.Server.Implementations.Library.Validators /// Task. public async Task Run(IProgress progress, CancellationToken cancellationToken) { - var allItems = _libraryManager.RootFolder.RecursiveChildren.ToList(); + var allItems = _libraryManager.RootFolder.RecursiveChildren.ToArray(); - var allMusicArtists = allItems.OfType().ToList(); - var allSongs = allItems.OfType