|
|
|
@ -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>
|
|
|
|
@ -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,6 +599,15 @@ namespace MediaBrowser.Server.Implementations.Library
|
|
|
|
|
|
|
|
|
|
var key = Path.Combine(path, FileSystem.GetValidFilename(name));
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|