Improve reliability of HasChanged check (#11792)

pull/11830/head
Tim Eisele 4 months ago committed by GitHub
parent e7b1162cb3
commit b2d54b82fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,6 +1,7 @@
#nullable disable #nullable disable
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
@ -141,19 +142,15 @@ namespace MediaBrowser.Providers.MediaInfo
&& item.SupportsLocalMetadata && item.SupportsLocalMetadata
&& !video.IsPlaceHolder) && !video.IsPlaceHolder)
{ {
if (!video.SubtitleFiles.SequenceEqual( var externalFiles = new HashSet<string>(_subtitleResolver.GetExternalFiles(video, directoryService, false).Select(info => info.Path), StringComparer.OrdinalIgnoreCase);
_subtitleResolver.GetExternalFiles(video, directoryService, false) if (!new HashSet<string>(video.SubtitleFiles, StringComparer.Ordinal).SetEquals(externalFiles))
.Select(info => info.Path).ToList(),
StringComparer.Ordinal))
{ {
_logger.LogDebug("Refreshing {ItemPath} due to external subtitles change.", item.Path); _logger.LogDebug("Refreshing {ItemPath} due to external subtitles change.", item.Path);
return true; return true;
} }
if (!video.AudioFiles.SequenceEqual( externalFiles = new HashSet<string>(_audioResolver.GetExternalFiles(video, directoryService, false).Select(info => info.Path), StringComparer.OrdinalIgnoreCase);
_audioResolver.GetExternalFiles(video, directoryService, false) if (!new HashSet<string>(video.AudioFiles, StringComparer.Ordinal).SetEquals(externalFiles))
.Select(info => info.Path).ToList(),
StringComparer.Ordinal))
{ {
_logger.LogDebug("Refreshing {ItemPath} due to external audio change.", item.Path); _logger.LogDebug("Refreshing {ItemPath} due to external audio change.", item.Path);
return true; return true;
@ -161,14 +158,14 @@ namespace MediaBrowser.Providers.MediaInfo
} }
if (item is Audio audio if (item is Audio audio
&& item.SupportsLocalMetadata && item.SupportsLocalMetadata)
&& !audio.LyricFiles.SequenceEqual(
_lyricResolver.GetExternalFiles(audio, directoryService, false)
.Select(info => info.Path).ToList(),
StringComparer.Ordinal))
{ {
_logger.LogDebug("Refreshing {ItemPath} due to external lyrics change.", item.Path); var externalFiles = new HashSet<string>(_lyricResolver.GetExternalFiles(audio, directoryService, false).Select(info => info.Path), StringComparer.OrdinalIgnoreCase);
return true; if (!new HashSet<string>(audio.LyricFiles, StringComparer.Ordinal).SetEquals(externalFiles))
{
_logger.LogDebug("Refreshing {ItemPath} due to external lyrics change.", item.Path);
return true;
}
} }
return false; return false;

Loading…
Cancel
Save