aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.XbmcMetadata
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-05-31 18:24:26 +0200
committerShadowghost <Ghost_of_Stone@web.de>2026-05-31 18:24:26 +0200
commita2bab98c23b2ca8214d6d53650c6a0cfef45e581 (patch)
tree069e0409620a191f0db94bc8c6b52bbd17c76105 /MediaBrowser.XbmcMetadata
parenta479e145dc1b31c0babd27994122dde0dbc6e9cb (diff)
parent9397148b20b36d7a95a36a95ad9ff4f060e770f7 (diff)
Merge remote-tracking branch 'upstream/master' into search-rebased
Diffstat (limited to 'MediaBrowser.XbmcMetadata')
-rw-r--r--MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs14
1 files changed, 11 insertions, 3 deletions
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index ed32e6c76a..78907a5e68 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -198,15 +198,23 @@ namespace MediaBrowser.XbmcMetadata.Savers
cancellationToken.ThrowIfCancellationRequested();
- await SaveToFileAsync(memoryStream, path).ConfigureAwait(false);
+ await SaveToFileAsync(memoryStream, path, cancellationToken).ConfigureAwait(false);
}
}
- private async Task SaveToFileAsync(Stream stream, string path)
+ private async Task SaveToFileAsync(Stream stream, string path, CancellationToken cancellationToken)
{
var directory = Path.GetDirectoryName(path) ?? throw new ArgumentException($"Provided path ({path}) is not valid.", nameof(path));
Directory.CreateDirectory(directory);
+ // Compare byte-for-byte before proceeding.
+ if (File.Exists(path) && await stream.IsFileIdenticalAsync(path, cancellationToken).ConfigureAwait(false))
+ {
+ return; // Don't save since .nfo is unchanged.
+ }
+
+ stream.Position = 0;
+
// On Windows, saving the file will fail if the file is hidden or readonly
FileSystem.SetAttributes(path, false, false);
@@ -222,7 +230,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
var filestream = new FileStream(path, fileStreamOptions);
await using (filestream.ConfigureAwait(false))
{
- await stream.CopyToAsync(filestream).ConfigureAwait(false);
+ await stream.CopyToAsync(filestream, cancellationToken).ConfigureAwait(false);
}
if (ConfigurationManager.Configuration.SaveMetadataHidden)