Skip to content

Commit

Permalink
Skip local metadata providers when identifying
Browse files Browse the repository at this point in the history
  • Loading branch information
Shadowghost committed Jun 2, 2024
1 parent ab43157 commit a7e2271
Showing 1 changed file with 50 additions and 45 deletions.
95 changes: 50 additions & 45 deletions MediaBrowser.Providers/Manager/MetadataService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -669,69 +669,74 @@ public bool CanRefreshPrimary(Type type)
temp.Item.Id = item.Id;

var foundImageTypes = new List<ImageType>();
foreach (var provider in providers.OfType<ILocalMetadataProvider<TItemType>>())
{
var providerName = provider.GetType().Name;
Logger.LogDebug("Running {Provider} for {Item}", providerName, logName);

var itemInfo = new ItemInfo(item);

try
// Only execute local providers if we are not identifying
if (options.SearchResult is null)
{
foreach (var provider in providers.OfType<ILocalMetadataProvider<TItemType>>())
{
var localItem = await provider.GetMetadata(itemInfo, options.DirectoryService, cancellationToken).ConfigureAwait(false);
var providerName = provider.GetType().Name;
Logger.LogDebug("Running {Provider} for {Item}", providerName, logName);

var itemInfo = new ItemInfo(item);

if (localItem.HasMetadata)
try
{
foreach (var remoteImage in localItem.RemoteImages)
var localItem = await provider.GetMetadata(itemInfo, options.DirectoryService, cancellationToken).ConfigureAwait(false);

if (localItem.HasMetadata)
{
try
foreach (var remoteImage in localItem.RemoteImages)
{
if (item.ImageInfos.Any(x => x.Type == remoteImage.Type)
&& !options.IsReplacingImage(remoteImage.Type))
try
{
continue;
}
if (item.ImageInfos.Any(x => x.Type == remoteImage.Type)
&& !options.IsReplacingImage(remoteImage.Type))
{
continue;
}

await ProviderManager.SaveImage(item, remoteImage.Url, remoteImage.Type, null, cancellationToken).ConfigureAwait(false);
refreshResult.UpdateType |= ItemUpdateType.ImageUpdate;
await ProviderManager.SaveImage(item, remoteImage.Url, remoteImage.Type, null, cancellationToken).ConfigureAwait(false);
refreshResult.UpdateType |= ItemUpdateType.ImageUpdate;

// remember imagetype that has just been downloaded
foundImageTypes.Add(remoteImage.Type);
// remember imagetype that has just been downloaded
foundImageTypes.Add(remoteImage.Type);
}
catch (HttpRequestException ex)
{
Logger.LogError(ex, "Could not save {ImageType} image: {Url}", Enum.GetName(remoteImage.Type), remoteImage.Url);
}
}
catch (HttpRequestException ex)

if (foundImageTypes.Count > 0)
{
Logger.LogError(ex, "Could not save {ImageType} image: {Url}", Enum.GetName(remoteImage.Type), remoteImage.Url);
imageService.UpdateReplaceImages(options, foundImageTypes);
}
}

if (foundImageTypes.Count > 0)
{
imageService.UpdateReplaceImages(options, foundImageTypes);
}
if (imageService.MergeImages(item, localItem.Images, options))
{
refreshResult.UpdateType |= ItemUpdateType.ImageUpdate;
}

if (imageService.MergeImages(item, localItem.Images, options))
{
refreshResult.UpdateType |= ItemUpdateType.ImageUpdate;
}
MergeData(localItem, temp, Array.Empty<MetadataField>(), false, true);
refreshResult.UpdateType |= ItemUpdateType.MetadataImport;

MergeData(localItem, temp, Array.Empty<MetadataField>(), false, true);
refreshResult.UpdateType |= ItemUpdateType.MetadataImport;
break;
}

break;
Logger.LogDebug("{Provider} returned no metadata for {Item}", providerName, logName);
}
catch (OperationCanceledException)
{
throw;
}
catch (Exception ex)
{
Logger.LogError(ex, "Error in {Provider}", provider.Name);

Logger.LogDebug("{Provider} returned no metadata for {Item}", providerName, logName);
}
catch (OperationCanceledException)
{
throw;
}
catch (Exception ex)
{
Logger.LogError(ex, "Error in {Provider}", provider.Name);

// If a local provider fails, consider that a failure
refreshResult.ErrorMessage = ex.Message;
// If a local provider fails, consider that a failure
refreshResult.ErrorMessage = ex.Message;
}
}
}

Expand Down

0 comments on commit a7e2271

Please sign in to comment.