1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-25 22:46:31 -04:00

New: Restrict repack upgrades to the same release group

Closes #946
This commit is contained in:
Mark McDowall
2019-04-29 23:38:18 -07:00
parent 1b3acb52f1
commit e70d92f670
7 changed files with 175 additions and 3 deletions
@@ -0,0 +1,43 @@
using System;
using System.Linq;
using NLog;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.DecisionEngine.Specifications
{
public class RepackSpecification : IDecisionEngineSpecification
{
private readonly Logger _logger;
public RepackSpecification(Logger logger)
{
_logger = logger;
}
public SpecificationPriority Priority => SpecificationPriority.Database;
public RejectionType Type => RejectionType.Permanent;
public Decision IsSatisfiedBy(RemoteEpisode subject, SearchCriteriaBase searchCriteria)
{
if (!subject.ParsedEpisodeInfo.Quality.Revision.IsRepack)
{
return Decision.Accept();
}
foreach (var file in subject.Episodes.Where(c => c.EpisodeFileId != 0).Select(c => c.EpisodeFile.Value))
{
var releaseGroup = subject.ParsedEpisodeInfo.ReleaseGroup;
var fileReleaseGroup = file.ReleaseGroup;
if (!fileReleaseGroup.Equals(releaseGroup, StringComparison.InvariantCultureIgnoreCase))
{
_logger.Debug("Release is a repack for a different release group. Release Group: {0}. File release group: {0}", releaseGroup, fileReleaseGroup);
return Decision.Reject("Release is a repack for a different release group. Release Group: {0}. File release group: {0}", releaseGroup, fileReleaseGroup);
}
}
return Decision.Accept();
}
}
}