Merge pull request #12055 from Shadowghost/fix-season-backdrops

Fix season backdrops
This commit is contained in:
Bond-009 2024-06-24 22:41:57 +02:00 committed by GitHub
commit 2266a00337
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 25 additions and 18 deletions

View file

@ -427,13 +427,15 @@ namespace MediaBrowser.Providers.Manager
if (type == ImageType.Backdrop && saveLocally) if (type == ImageType.Backdrop && saveLocally)
{ {
if (season is not null && season.IndexNumber.HasValue) if (season is not null
&& season.IndexNumber.HasValue
&& (imageIndex is null || imageIndex == 0))
{ {
var seriesFolder = season.SeriesPath; var seriesFolder = season.SeriesPath;
var seasonMarker = season.IndexNumber.Value == 0 var seasonMarker = season.IndexNumber.Value == 0
? "-specials" ? "-specials"
: season.IndexNumber.Value.ToString("00", CultureInfo.InvariantCulture); : season.IndexNumber.Value.ToString("00", CultureInfo.InvariantCulture);
var imageFilename = "season" + seasonMarker + "-fanart" + extension; var imageFilename = "season" + seasonMarker + "-fanart" + extension;

View file

@ -159,7 +159,7 @@ namespace MediaBrowser.Providers.Manager
} }
} }
// only delete existing multi-images if new ones were added // Only delete existing multi-images if new ones were added
if (oldBackdropImages.Length > 0 && oldBackdropImages.Length < item.GetImages(ImageType.Backdrop).Count()) if (oldBackdropImages.Length > 0 && oldBackdropImages.Length < item.GetImages(ImageType.Backdrop).Count())
{ {
PruneImages(item, oldBackdropImages); PruneImages(item, oldBackdropImages);
@ -422,14 +422,11 @@ namespace MediaBrowser.Providers.Manager
{ {
var changed = item.ValidateImages(); var changed = item.ValidateImages();
var foundImageTypes = new List<ImageType>(); var foundImageTypes = new List<ImageType>();
for (var i = 0; i < _singularImages.Length; i++) for (var i = 0; i < _singularImages.Length; i++)
{ {
var type = _singularImages[i]; var type = _singularImages[i];
var image = GetFirstLocalImageInfoByType(images, type); var image = GetFirstLocalImageInfoByType(images, type);
if (image is not null)
// Only use local images if we are not replacing and saving
if (image is not null && !(item.IsSaveLocalMetadataEnabled() && refreshOptions.ReplaceAllImages))
{ {
var currentImage = item.GetImageInfo(type, 0); var currentImage = item.GetImageInfo(type, 0);
// if image file is stored with media, don't replace that later // if image file is stored with media, don't replace that later

View file

@ -100,21 +100,29 @@ namespace MediaBrowser.Providers.Manager
} }
} }
// Start by validating images
var localImagesFailed = false; var localImagesFailed = false;
var allImageProviders = ProviderManager.GetImageProviders(item, refreshOptions).ToList(); var allImageProviders = ProviderManager.GetImageProviders(item, refreshOptions).ToList();
try
// Only validate already registered images if we are replacing and saving locally
if (item.IsSaveLocalMetadataEnabled() && refreshOptions.ReplaceAllImages)
{ {
// Always validate images and check for new locally stored ones. item.ValidateImages();
if (ImageProvider.ValidateImages(item, allImageProviders.OfType<ILocalImageProvider>(), refreshOptions))
{
updateType |= ItemUpdateType.ImageUpdate;
}
} }
catch (Exception ex) else
{ {
localImagesFailed = true; // Run full image validation and register new local images
Logger.LogError(ex, "Error validating images for {Item}", item.Path ?? item.Name ?? "Unknown name"); try
{
if (ImageProvider.ValidateImages(item, allImageProviders.OfType<ILocalImageProvider>(), refreshOptions))
{
updateType |= ItemUpdateType.ImageUpdate;
}
}
catch (Exception ex)
{
localImagesFailed = true;
Logger.LogError(ex, "Error validating images for {Item}", item.Path ?? item.Name ?? "Unknown name");
}
} }
var metadataResult = new MetadataResult<TItemType> var metadataResult = new MetadataResult<TItemType>