diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs index 1f2ef13f2..c58e06b28 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs @@ -39,7 +39,13 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync var profile = subject.Movie.Profile.Value; var delayProfile = _delayProfileService.BestForTags(subject.Movie.Tags); var delay = delayProfile.GetProtocolDelay(subject.Release.DownloadProtocol); - var isPreferredProtocol = subject.Release.DownloadProtocol == delayProfile.PreferredProtocol; + var isPreferredProtocol = subject.Release.DownloadProtocol == delayProfile.PreferredProtocol; + + // Preferred word count + var title = subject.Release.Title; + var preferredWords = subject.Movie.Profile.Value.PreferredTags; + var preferredcount = preferredWords.AsEnumerable().Count(w => title.ToLower().Contains(w.ToLower())); + if (delay == 0) { @@ -49,7 +55,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync var comparer = new QualityModelComparer(profile); - if (isPreferredProtocol && (subject.Movie.MovieFileId != 0)) + if (isPreferredProtocol && (subject.Movie.MovieFileId != 0) && (preferredcount > 0 || preferredWords == null)) { var upgradable = _qualityUpgradableSpecification.IsUpgradable(profile, subject.Movie.MovieFile.Value.Quality, subject.ParsedMovieInfo.Quality); @@ -59,7 +65,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync if (revisionUpgrade) { - _logger.Debug("New quality is a better revision for existing quality, skipping delay"); + _logger.Debug("New quality is a better revision for existing quality and preferred word count is {0}, skipping delay", preferredcount); return Decision.Accept(); } } @@ -69,13 +75,10 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync // If quality meets or exceeds the best allowed quality in the profile accept it immediately var bestQualityInProfile = new QualityModel(profile.LastAllowedQuality()); var isBestInProfile = comparer.Compare(subject.ParsedMovieInfo.Quality, bestQualityInProfile) >= 0; - var title = subject.Release.Title; - var preferredWords = subject.Movie.Profile.Value.PreferredTags; - var num = preferredWords.AsEnumerable().Count(w => title.ToLower().Contains(w.ToLower())); - if (isBestInProfile && isPreferredProtocol && (num > 0 || preferredWords == null)) + if (isBestInProfile && isPreferredProtocol && (preferredcount > 0 || preferredWords == null)) { - _logger.Debug("Quality is highest in profile for preferred protocol and preferred word count is {0}, will not delay",num); + _logger.Debug("Quality is highest in profile for preferred protocol and preferred word count is {0}, will not delay.", preferredcount); return Decision.Accept(); }