aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorEric Reed <ebr@mediabrowser3.com>2013-04-15 17:35:01 -0400
committerEric Reed <ebr@mediabrowser3.com>2013-04-15 17:35:01 -0400
commitc37825aa123ecc4e9b06a3c108f2cc1ee144a392 (patch)
tree27b43e450657af0947eda995a0df9f35cedaa700 /MediaBrowser.Server.Implementations
parent71223ed1a8de3e155c7e0df251c5f19f5263d024 (diff)
parent43f7f34b5d7ac5bad34e02ca2c244c10e6f9d14e (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs18
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs54
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteUserDataRepository.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs2
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 = {