diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-17 22:43:34 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-17 22:43:34 -0400 |
| commit | 60780399c51165a06a04d8a01d59252bc9c82d7f (patch) | |
| tree | 53edb713a4d311234b21eebfa091a6c2bf382db5 /MediaBrowser.Server.Implementations/Library | |
| parent | 06c611dd50d37b786a957cea7308fb30e926a919 (diff) | |
allow request header overrides
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
11 files changed, 50 insertions, 55 deletions
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; @@ -24,12 +22,6 @@ namespace MediaBrowser.Server.Implementations.Library public class UserManager : IUserManager { /// <summary> - /// The _active connections - /// </summary> - private readonly ConcurrentDictionary<string, SessionInfo> _activeConnections = - new ConcurrentDictionary<string, SessionInfo>(StringComparer.OrdinalIgnoreCase); - - /// <summary> /// The _users /// </summary> private IEnumerable<User> _users; @@ -65,24 +57,6 @@ namespace MediaBrowser.Server.Implementations.Library } /// <summary> - /// Gets all connections. - /// </summary> - /// <value>All connections.</value> - public IEnumerable<SessionInfo> AllConnections - { - get { return _activeConnections.Values.OrderByDescending(c => c.LastActivityDate); } - } - - /// <summary> - /// Gets the active connections. - /// </summary> - /// <value>The active connections.</value> - public IEnumerable<SessionInfo> RecentConnections - { - get { return AllConnections.Where(c => (DateTime.UtcNow - c.LastActivityDate).TotalMinutes <= 5); } - } - - /// <summary> /// The _logger /// </summary> private readonly ILogger _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 /// <returns>Task.</returns> public async Task Run(IProgress<double> progress, CancellationToken cancellationToken) { - var allItems = _libraryManager.RootFolder.RecursiveChildren.ToList(); + var allItems = _libraryManager.RootFolder.RecursiveChildren.ToArray(); - var allMusicArtists = allItems.OfType<MusicArtist>().ToList(); - var allSongs = allItems.OfType<Audio>().ToList(); + var allMusicArtists = allItems.OfType<MusicArtist>().ToArray(); + var allSongs = allItems.OfType<Audio>().ToArray(); var innerProgress = new ActionableProgress<double>(); @@ -73,8 +73,8 @@ namespace MediaBrowser.Server.Implementations.Library.Validators var numComplete = 0; var userLibraries = _userManager.Users - .Select(i => new Tuple<Guid, List<IHasArtist>>(i.Id, i.RootFolder.GetRecursiveChildren(i).OfType<IHasArtist>().ToList())) - .ToList(); + .Select(i => new Tuple<Guid, IHasArtist[]>(i.Id, i.RootFolder.GetRecursiveChildren(i).OfType<IHasArtist>().ToArray())) + .ToArray(); foreach (var artist in allArtists) { @@ -117,7 +117,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators numComplete++; double percent = numComplete; - percent /= allArtists.Count; + percent /= allArtists.Length; percent *= 20; progress.Report(80 + percent); @@ -138,11 +138,11 @@ namespace MediaBrowser.Server.Implementations.Library.Validators var items = allItems .Where(i => i.HasArtist(name)) - .ToList(); + .ToArray(); var counts = new ItemByNameCounts { - TotalCount = items.Count, + TotalCount = items.Length, SongCount = items.OfType<Audio>().Count(), @@ -165,7 +165,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators private void MergeImages(Dictionary<ImageType, string> source, Dictionary<ImageType, string> target) { foreach (var key in source.Keys - .ToList() + .ToArray() .Where(k => !target.ContainsKey(k))) { string path; @@ -184,7 +184,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators /// <param name="cancellationToken">The cancellation token.</param> /// <param name="progress">The progress.</param> /// <returns>Task{Artist[]}.</returns> - private async Task<List<Artist>> GetAllArtists(IEnumerable<Audio> allSongs, CancellationToken cancellationToken, IProgress<double> progress) + private async Task<Artist[]> GetAllArtists(IEnumerable<Audio> allSongs, CancellationToken cancellationToken, IProgress<double> progress) { var allArtists = allSongs .SelectMany(i => @@ -200,7 +200,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators return list; }) .Distinct(StringComparer.OrdinalIgnoreCase) - .ToList(); + .ToArray(); const int maxTasks = 3; @@ -246,7 +246,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators { numComplete++; double percent = numComplete; - percent /= allArtists.Count; + percent /= allArtists.Length; progress.Report(100 * percent); } @@ -255,7 +255,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators await Task.WhenAll(tasks).ConfigureAwait(false); - return returnArtists.ToList(); + return returnArtists.ToArray(); } /// <summary> diff --git a/MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs b/MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs index 084d720ae..679eadb12 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs @@ -127,7 +127,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators /// <param name="media">The media.</param> /// <param name="names">The names.</param> /// <param name="masterDictionary">The master dictionary.</param> - internal static void SetItemCounts(Guid userId, BaseItem media, List<string> names, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary) + internal static void SetItemCounts(Guid userId, BaseItem media, IEnumerable<string> names, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary) { foreach (var name in names) { diff --git a/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs b/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs index 3c1528d01..065507d3c 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs @@ -46,14 +46,10 @@ namespace MediaBrowser.Server.Implementations.Library.Validators private void RunInternal(IProgress<double> progress, CancellationToken cancellationToken) { - var allItems = _libraryManager.RootFolder.RecursiveChildren.ToList(); - var userLibraries = _userManager.Users - .Select(i => new Tuple<Guid, List<BaseItem>>(i.Id, i.RootFolder.GetRecursiveChildren(i).ToList())) + .Select(i => new Tuple<Guid, BaseItem[]>(i.Id, i.RootFolder.GetRecursiveChildren(i).ToArray())) .ToList(); - var allLibraryItems = allItems; - var masterDictionary = new Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>>(StringComparer.OrdinalIgnoreCase); // Populate counts of items @@ -122,7 +118,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators var names = media .People.Select(i => i.Name) .Distinct(StringComparer.OrdinalIgnoreCase) - .ToList(); + .ToArray(); CountHelpers.SetItemCounts(userId, media, names, masterDictionary); } |
