diff --git a/src/NzbDrone.Core/IndexerVersions/IndexerDefinitionUpdateService.cs b/src/NzbDrone.Core/IndexerVersions/IndexerDefinitionUpdateService.cs index 6b2c4dc91..3c522bfb7 100644 --- a/src/NzbDrone.Core/IndexerVersions/IndexerDefinitionUpdateService.cs +++ b/src/NzbDrone.Core/IndexerVersions/IndexerDefinitionUpdateService.cs @@ -28,8 +28,8 @@ namespace NzbDrone.Core.IndexerVersions { /* Update Service will fall back if version # does not exist for an indexer per Ta */ - private const string DEFINITION_BRANCH = "master"; - private const int DEFINITION_VERSION = 9; + private const string DEFINITION_BRANCH = "cardigann-contains"; + private const int DEFINITION_VERSION = 10; // Used when moving yml to C# private readonly List _definitionBlocklist = new () diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannDefinition.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannDefinition.cs index 9ada719c1..2112081c7 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannDefinition.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannDefinition.cs @@ -134,6 +134,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann { public string Path { get; set; } public string Selector { get; set; } + public string Contains { get; set; } } public class RatioBlock : SelectorBlock diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannRequestGenerator.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannRequestGenerator.cs index 814799752..636f5e8fe 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannRequestGenerator.cs @@ -1028,6 +1028,16 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann return true; } + if (_definition.Login.Test?.Contains != null && _definition.Login.Test.Contains.IsNotNullOrWhiteSpace()) + { + if (_definition.Login.Test.Contains[0] == '!') + { + return response.Content.Contains(_definition.Login.Test.Contains[1..]); + } + + return !response.Content.Contains(_definition.Login.Test.Contains); + } + // Only run html test selector on html responses if (_definition.Login.Test?.Selector != null && (response.Headers.ContentType?.Contains("text/html") ?? true)) {