Only save images when changed (#14425)

This commit is contained in:
JPVenson 2025-07-07 18:14:01 +03:00 committed by GitHub
parent 6d4169a449
commit 4d5ba8d7a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 4 deletions

View File

@ -1981,6 +1981,8 @@ namespace Emby.Server.Implementations.Library
return; return;
} }
var anyChange = false;
foreach (var img in outdated) foreach (var img in outdated)
{ {
var image = img; var image = img;
@ -2012,6 +2014,7 @@ namespace Emby.Server.Implementations.Library
try try
{ {
size = _imageProcessor.GetImageDimensions(item, image); size = _imageProcessor.GetImageDimensions(item, image);
anyChange = image.Width != size.Width || image.Height != size.Height;
image.Width = size.Width; image.Width = size.Width;
image.Height = size.Height; image.Height = size.Height;
} }
@ -2019,23 +2022,29 @@ namespace Emby.Server.Implementations.Library
{ {
_logger.LogError(ex, "Cannot get image dimensions for {ImagePath}", image.Path); _logger.LogError(ex, "Cannot get image dimensions for {ImagePath}", image.Path);
size = default; size = default;
anyChange = image.Width != size.Width || image.Height != size.Height;
image.Width = 0; image.Width = 0;
image.Height = 0; image.Height = 0;
} }
try try
{ {
image.BlurHash = _imageProcessor.GetImageBlurHash(image.Path, size); var blurhash = _imageProcessor.GetImageBlurHash(image.Path, size);
anyChange = anyChange || !blurhash.Equals(image.BlurHash, StringComparison.Ordinal);
image.BlurHash = blurhash;
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "Cannot compute blurhash for {ImagePath}", image.Path); _logger.LogError(ex, "Cannot compute blurhash for {ImagePath}", image.Path);
anyChange = anyChange || !string.IsNullOrEmpty(image.BlurHash);
image.BlurHash = string.Empty; image.BlurHash = string.Empty;
} }
try try
{ {
image.DateModified = _fileSystem.GetLastWriteTimeUtc(image.Path); var modifiedDate = _fileSystem.GetLastWriteTimeUtc(image.Path);
anyChange = anyChange || modifiedDate != image.DateModified;
image.DateModified = modifiedDate;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -2043,7 +2052,11 @@ namespace Emby.Server.Implementations.Library
} }
} }
if (anyChange)
{
_itemRepository.SaveImages(item); _itemRepository.SaveImages(item);
}
RegisterItem(item); RegisterItem(item);
} }

View File

@ -567,7 +567,7 @@ public sealed class BaseItemRepository
var itemValuesStore = existingValues.Concat(missingItemValues).ToArray(); var itemValuesStore = existingValues.Concat(missingItemValues).ToArray();
var valueMap = itemValueMaps var valueMap = itemValueMaps
.Select(f => (f.Item, Values: f.Values.Select(e => itemValuesStore.First(g => g.Value == e.Value && g.Type == e.MagicNumber)).ToArray())) .Select(f => (f.Item, Values: f.Values.Select(e => itemValuesStore.First(g => g.Value == e.Value && g.Type == e.MagicNumber)).DistinctBy(e => e.ItemValueId).ToArray()))
.ToArray(); .ToArray();
var mappedValues = context.ItemValuesMap.Where(e => ids.Contains(e.ItemId)).ToList(); var mappedValues = context.ItemValuesMap.Where(e => ids.Contains(e.ItemId)).ToList();