diff options
| author | Eric Reed <ebr@mediabrowser3.com> | 2013-04-15 17:35:01 -0400 |
|---|---|---|
| committer | Eric Reed <ebr@mediabrowser3.com> | 2013-04-15 17:35:01 -0400 |
| commit | c37825aa123ecc4e9b06a3c108f2cc1ee144a392 (patch) | |
| tree | 27b43e450657af0947eda995a0df9f35cedaa700 /MediaBrowser.Server.Implementations | |
| parent | 71223ed1a8de3e155c7e0df251c5f19f5263d024 (diff) | |
| parent | 43f7f34b5d7ac5bad34e02ca2c244c10e6f9d14e (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations')
7 files changed, 44 insertions, 38 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 6436e7716..eccaf2da4 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -574,7 +574,7 @@ namespace MediaBrowser.Server.Implementations.Library /// <summary> /// The images by name item cache /// </summary> - private readonly ConcurrentDictionary<string, object> _imagesByNameItemCache = new ConcurrentDictionary<string, object>(StringComparer.OrdinalIgnoreCase); + private readonly ConcurrentDictionary<string, BaseItem> _imagesByNameItemCache = new ConcurrentDictionary<string, BaseItem>(StringComparer.OrdinalIgnoreCase); /// <summary> /// Generically retrieves an IBN item @@ -588,7 +588,7 @@ namespace MediaBrowser.Server.Implementations.Library /// <returns>Task{``0}.</returns> /// <exception cref="System.ArgumentNullException"> /// </exception> - private Task<T> GetImagesByNameItem<T>(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true, bool forceCreation = false) + private async Task<T> GetImagesByNameItem<T>(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true, bool forceCreation = false) where T : BaseItem, new() { if (string.IsNullOrEmpty(path)) @@ -603,18 +603,16 @@ namespace MediaBrowser.Server.Implementations.Library var key = Path.Combine(path, FileSystem.GetValidFilename(name)); - if (forceCreation) - { - var task = CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders); + BaseItem obj; - _imagesByNameItemCache.AddOrUpdate(key, task, (keyName, oldValue) => task); + if (forceCreation || !_imagesByNameItemCache.TryGetValue(key, out obj)) + { + obj = await CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders).ConfigureAwait(false); - return task; + _imagesByNameItemCache.AddOrUpdate(key, obj, (keyName, oldValue) => obj); } - var obj = _imagesByNameItemCache.GetOrAdd(key, keyname => CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders)); - - return obj as Task<T>; + return obj as T; } /// <summary> diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs index a995f1a47..a5c2f28b7 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.MediaInfo; using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers.MediaInfo; using MediaBrowser.Model.Entities; @@ -95,33 +96,40 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks /// <returns>Task.</returns> public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress) { - var items = _libraryManager.RootFolder.RecursiveChildren - .OfType<Video>() - .Where(i => - { - if (!string.IsNullOrEmpty(i.PrimaryImagePath)) - { - return false; - } + var allItems = _libraryManager.RootFolder.RecursiveChildren.ToList(); - if (i.LocationType != LocationType.FileSystem) - { - return false; - } + var localTrailers = allItems.SelectMany(i => i.LocalTrailers); - if (i.VideoType == VideoType.HdDvd) - { - return false; - } + var videos = allItems.OfType<Video>().ToList(); - if (i.VideoType == VideoType.Iso && !i.IsoType.HasValue) - { - return false; - } + var items = videos; + items.AddRange(localTrailers); + items.AddRange(videos.OfType<Movie>().SelectMany(i => i.SpecialFeatures).ToList()); + + items = items.Where(i => + { + if (!string.IsNullOrEmpty(i.PrimaryImagePath)) + { + return false; + } + + if (i.LocationType != LocationType.FileSystem) + { + return false; + } + + if (i.VideoType == VideoType.HdDvd) + { + return false; + } + + if (i.VideoType == VideoType.Iso && !i.IsoType.HasValue) + { + return false; + } - return i.MediaStreams != null && i.MediaStreams.Any(m => m.Type == MediaStreamType.Video); - }) - .ToList(); + return i.MediaStreams != null && i.MediaStreams.Any(m => m.Type == MediaStreamType.Video); + }).ToList(); progress.Report(0); diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs index fbb0e4f8c..64a48c54d 100644 --- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs +++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs @@ -86,7 +86,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite { var dbFile = Path.Combine(_appPaths.DataPath, "displaypreferences.db"); - await ConnectToDB(dbFile).ConfigureAwait(false); + await ConnectToDb(dbFile).ConfigureAwait(false); string[] queries = { diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs index 3403cf79f..a3d184888 100644 --- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs @@ -82,7 +82,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite { var dbFile = Path.Combine(_appPaths.DataPath, "library.db"); - await ConnectToDB(dbFile).ConfigureAwait(false); + await ConnectToDb(dbFile).ConfigureAwait(false); string[] queries = { diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs index baeb0b1a7..6824442f1 100644 --- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs +++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs @@ -76,7 +76,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite /// <param name="dbPath">The db path.</param> /// <returns>Task{System.Boolean}.</returns> /// <exception cref="System.ArgumentNullException">dbPath</exception> - protected async Task ConnectToDB(string dbPath) + protected async Task ConnectToDb(string dbPath) { if (string.IsNullOrEmpty(dbPath)) { diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs index 8124733e5..6a7207d37 100644 --- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs +++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs @@ -86,7 +86,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite { var dbFile = Path.Combine(_appPaths.DataPath, "userdata.db"); - await ConnectToDB(dbFile).ConfigureAwait(false); + await ConnectToDb(dbFile).ConfigureAwait(false); string[] queries = { diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs index 75bb42774..b95a54156 100644 --- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs +++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs @@ -88,7 +88,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite { var dbFile = Path.Combine(_appPaths.DataPath, "users.db"); - await ConnectToDB(dbFile).ConfigureAwait(false); + await ConnectToDb(dbFile).ConfigureAwait(false); string[] queries = { |
