aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs8
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs6
-rw-r--r--MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs29
-rw-r--r--MediaBrowser.ServerApplication/Controls/ItemUpdateNotification.xaml.cs2
6 files changed, 32 insertions, 19 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index f862ce61b..eefce2fd3 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -538,8 +538,12 @@ namespace MediaBrowser.Controller.Entities
var validChildren = new ConcurrentBag<Tuple<BaseItem, bool>>();
cancellationToken.ThrowIfCancellationRequested();
-
- Parallel.ForEach(nonCachedChildren, child =>
+
+ var options = new ParallelOptions
+ {
+ };
+
+ Parallel.ForEach(nonCachedChildren, options, child =>
{
BaseItem currentChild;
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
index 479a2b1af..542b8eed8 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
@@ -139,7 +139,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
// If we don't have a ProductionYear try and get it from PremiereDate
if (audio.PremiereDate.HasValue && !audio.ProductionYear.HasValue)
{
- audio.ProductionYear = audio.PremiereDate.Value.Year;
+ audio.ProductionYear = audio.PremiereDate.Value.ToLocalTime().Year;
}
FetchGenres(audio, tags);
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
index 00d604d8d..fb8370248 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
@@ -927,19 +927,19 @@ namespace MediaBrowser.Controller.Providers.Movies
movie.OfficialRating = ourRelease.certification ?? usRelease.certification;
if (ourRelease.release_date > new DateTime(1900, 1, 1))
{
- movie.PremiereDate = ourRelease.release_date;
+ movie.PremiereDate = ourRelease.release_date.ToUniversalTime();
movie.ProductionYear = ourRelease.release_date.Year;
}
else
{
- movie.PremiereDate = usRelease.release_date;
+ movie.PremiereDate = usRelease.release_date.ToUniversalTime();
movie.ProductionYear = usRelease.release_date.Year;
}
}
else
{
//no specific country release info at all
- movie.PremiereDate = movieData.release_date;
+ movie.PremiereDate = movieData.release_date.ToUniversalTime();
movie.ProductionYear = movieData.release_date.Year;
}
diff --git a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
index 49823b9b6..699c5473b 100644
--- a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
+++ b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
@@ -231,12 +231,12 @@ namespace MediaBrowser.Controller.Providers.Movies
if (DateTime.TryParseExact(searchResult.Birthday, "yyyy-MM-dd", new CultureInfo("en-US"), DateTimeStyles.None, out date))
{
- person.PremiereDate = date;
+ person.PremiereDate = date.ToUniversalTime();
}
if (DateTime.TryParseExact(searchResult.Deathday, "yyyy-MM-dd", new CultureInfo("en-US"), DateTimeStyles.None, out date))
{
- person.EndDate = date;
+ person.EndDate = date.ToUniversalTime();
}
if (!string.IsNullOrEmpty(searchResult.Homepage))
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index e6c67d6c9..d397b1548 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -516,10 +516,11 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="name">The name.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
+ /// <param name="forceCreation">if set to <c>true</c> [force creation].</param>
/// <returns>Task{Person}.</returns>
- private Task<Person> GetPerson(string name, CancellationToken cancellationToken, bool allowSlowProviders = false)
+ private Task<Person> GetPerson(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool forceCreation = false)
{
- return GetImagesByNameItem<Person>(ConfigurationManager.ApplicationPaths.PeoplePath, name, cancellationToken, allowSlowProviders);
+ return GetImagesByNameItem<Person>(ConfigurationManager.ApplicationPaths.PeoplePath, name, cancellationToken, allowSlowProviders, forceCreation);
}
/// <summary>
@@ -569,7 +570,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, object> _imagesByNameItemCache = new ConcurrentDictionary<string, object>(StringComparer.OrdinalIgnoreCase);
/// <summary>
/// Generically retrieves an IBN item
@@ -579,9 +580,11 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="name">The name.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <param name="allowSlowProviders">if set to <c>true</c> [allow slow providers].</param>
+ /// <param name="forceCreation">if set to <c>true</c> [force creation].</param>
/// <returns>Task{``0}.</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- private Task<T> GetImagesByNameItem<T>(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true)
+ /// <exception cref="System.ArgumentNullException">
+ /// </exception>
+ private Task<T> GetImagesByNameItem<T>(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true, bool forceCreation = false)
where T : BaseItem, new()
{
if (string.IsNullOrEmpty(path))
@@ -596,7 +599,16 @@ namespace MediaBrowser.Server.Implementations.Library
var key = Path.Combine(path, FileSystem.GetValidFilename(name));
- var obj = ImagesByNameItemCache.GetOrAdd(key, keyname => CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders));
+ if (forceCreation)
+ {
+ var task = CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders);
+
+ _imagesByNameItemCache.AddOrUpdate(key, task, (keyName, oldValue) => task);
+
+ return task;
+ }
+
+ var obj = _imagesByNameItemCache.GetOrAdd(key, keyname => CreateImagesByNameItem<T>(path, name, cancellationToken, allowSlowProviders));
return obj as Task<T>;
}
@@ -676,9 +688,6 @@ namespace MediaBrowser.Server.Implementations.Library
/// <returns>Task.</returns>
public async Task ValidatePeople(CancellationToken cancellationToken, IProgress<double> progress)
{
- // Clear the IBN cache
- ImagesByNameItemCache.Clear();
-
const int maxTasks = 250;
var tasks = new List<Task>();
@@ -713,7 +722,7 @@ namespace MediaBrowser.Server.Implementations.Library
try
{
- await GetPerson(currentPerson.Name, cancellationToken, allowSlowProviders: true).ConfigureAwait(false);
+ await GetPerson(currentPerson.Name, cancellationToken, true, true).ConfigureAwait(false);
}
catch (IOException ex)
{
diff --git a/MediaBrowser.ServerApplication/Controls/ItemUpdateNotification.xaml.cs b/MediaBrowser.ServerApplication/Controls/ItemUpdateNotification.xaml.cs
index 5dceba994..1f224f24d 100644
--- a/MediaBrowser.ServerApplication/Controls/ItemUpdateNotification.xaml.cs
+++ b/MediaBrowser.ServerApplication/Controls/ItemUpdateNotification.xaml.cs
@@ -206,7 +206,7 @@ namespace MediaBrowser.ServerApplication.Controls
else
{
txtPremeireDate.Visibility = Visibility.Visible;
- txtPremeireDate.Text = "Premiered " + item.PremiereDate.Value.ToShortDateString();
+ txtPremeireDate.Text = "Premiered " + item.PremiereDate.Value.ToLocalTime().ToShortDateString();
}
}