-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New: Don't block imports when release was matched by ID if they were …
…grabbed via interactive search Closes #5043
- Loading branch information
Showing
9 changed files
with
115 additions
and
81 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
144 changes: 71 additions & 73 deletions
144
...tions/Search/SceneMappingSpecification.cs → ...ecifications/SceneMappingSpecification.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,73 +1,71 @@ | ||
using System.Linq; | ||
using NLog; | ||
using NzbDrone.Common.Extensions; | ||
using NzbDrone.Core.DataAugmentation.Scene; | ||
using NzbDrone.Core.IndexerSearch.Definitions; | ||
using NzbDrone.Core.Parser.Model; | ||
|
||
namespace NzbDrone.Core.DecisionEngine.Specifications.Search | ||
{ | ||
public class SceneMappingSpecification : IDecisionEngineSpecification | ||
{ | ||
private readonly Logger _logger; | ||
|
||
public SceneMappingSpecification(Logger logger) | ||
{ | ||
_logger = logger; | ||
} | ||
|
||
public SpecificationPriority Priority => SpecificationPriority.Default; | ||
public RejectionType Type => RejectionType.Temporary; // Temporary till there's a mapping | ||
|
||
public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria) | ||
{ | ||
if (remoteEpisode.SceneMapping == null) | ||
{ | ||
_logger.Debug("No applicable scene mapping, skipping."); | ||
return Decision.Accept(); | ||
} | ||
|
||
if (remoteEpisode.SceneMapping.SceneOrigin.IsNullOrWhiteSpace()) | ||
{ | ||
_logger.Debug("No explicit scene origin in scene mapping."); | ||
return Decision.Accept(); | ||
} | ||
|
||
var split = remoteEpisode.SceneMapping.SceneOrigin.Split(':'); | ||
|
||
var isInteractive = searchCriteria != null && searchCriteria.InteractiveSearch; | ||
|
||
if (remoteEpisode.SceneMapping.Comment.IsNotNullOrWhiteSpace()) | ||
{ | ||
_logger.Debug("SceneMapping has origin {0} with comment '{1}'.", remoteEpisode.SceneMapping.SceneOrigin, remoteEpisode.SceneMapping.Comment); | ||
} | ||
else | ||
{ | ||
_logger.Debug("SceneMapping has origin {0}.", remoteEpisode.SceneMapping.SceneOrigin); | ||
} | ||
|
||
if (split[0] == "mixed") | ||
{ | ||
_logger.Debug("SceneMapping origin is explicitly mixed, this means these were released with multiple unidentifiable numbering schemes."); | ||
|
||
if (remoteEpisode.SceneMapping.Comment.IsNotNullOrWhiteSpace()) | ||
{ | ||
return Decision.Reject("{0} has ambiguous numbering"); | ||
} | ||
else | ||
{ | ||
return Decision.Reject("Ambiguous numbering"); | ||
} | ||
} | ||
|
||
if (split[0] == "unknown") | ||
{ | ||
var type = split.Length >= 2 ? split[1] : "scene"; | ||
|
||
_logger.Debug("SceneMapping origin is explicitly unknown, unsure what numbering scheme it uses but '{0}' will be assumed. Provide full release title to Sonarr/TheXEM team.", type); | ||
} | ||
|
||
return Decision.Accept(); | ||
} | ||
} | ||
} | ||
using NLog; | ||
using NzbDrone.Common.Extensions; | ||
using NzbDrone.Core.IndexerSearch.Definitions; | ||
using NzbDrone.Core.Parser.Model; | ||
|
||
namespace NzbDrone.Core.DecisionEngine.Specifications | ||
{ | ||
public class SceneMappingSpecification : IDecisionEngineSpecification | ||
{ | ||
private readonly Logger _logger; | ||
|
||
public SceneMappingSpecification(Logger logger) | ||
{ | ||
_logger = logger; | ||
} | ||
|
||
public SpecificationPriority Priority => SpecificationPriority.Default; | ||
public RejectionType Type => RejectionType.Temporary; // Temporary till there's a mapping | ||
|
||
public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria) | ||
{ | ||
if (remoteEpisode.SceneMapping == null) | ||
{ | ||
_logger.Debug("No applicable scene mapping, skipping."); | ||
return Decision.Accept(); | ||
} | ||
|
||
if (remoteEpisode.SceneMapping.SceneOrigin.IsNullOrWhiteSpace()) | ||
{ | ||
_logger.Debug("No explicit scene origin in scene mapping."); | ||
return Decision.Accept(); | ||
} | ||
|
||
var split = remoteEpisode.SceneMapping.SceneOrigin.Split(':'); | ||
|
||
var isInteractive = searchCriteria != null && searchCriteria.InteractiveSearch; | ||
|
||
if (remoteEpisode.SceneMapping.Comment.IsNotNullOrWhiteSpace()) | ||
{ | ||
_logger.Debug("SceneMapping has origin {0} with comment '{1}'.", remoteEpisode.SceneMapping.SceneOrigin, remoteEpisode.SceneMapping.Comment); | ||
} | ||
else | ||
{ | ||
_logger.Debug("SceneMapping has origin {0}.", remoteEpisode.SceneMapping.SceneOrigin); | ||
} | ||
|
||
if (split[0] == "mixed") | ||
{ | ||
_logger.Debug("SceneMapping origin is explicitly mixed, this means these were released with multiple unidentifiable numbering schemes."); | ||
|
||
if (remoteEpisode.SceneMapping.Comment.IsNotNullOrWhiteSpace()) | ||
{ | ||
return Decision.Reject("{0} has ambiguous numbering"); | ||
} | ||
else | ||
{ | ||
return Decision.Reject("Ambiguous numbering"); | ||
} | ||
} | ||
|
||
if (split[0] == "unknown") | ||
{ | ||
var type = split.Length >= 2 ? split[1] : "scene"; | ||
|
||
_logger.Debug("SceneMapping origin is explicitly unknown, unsure what numbering scheme it uses but '{0}' will be assumed. Provide full release title to Sonarr/TheXEM team.", type); | ||
} | ||
|
||
return Decision.Accept(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters