diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs index dcfeb4024..afee4d523 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs @@ -825,9 +825,19 @@ protected string ResolveSiteLink() protected JArray JsonParseRowsSelector(JToken parsedJson, string rowSelector) { var selector = rowSelector.Split(':')[0]; - var rowsObj = parsedJson.SelectToken(selector).Value(); - return new JArray(rowsObj.Where(t => - JsonParseFieldSelector(t.Value(), rowSelector.Remove(0, selector.Length)) != null)); + + try + { + var rowsObj = parsedJson.SelectToken(selector).Value(); + + return new JArray(rowsObj.Where(t => JsonParseFieldSelector(t.Value(), rowSelector.Remove(0, selector.Length)) != null)); + } + catch (Exception ex) + { + _logger.Trace(ex, "Failed to parse JSON rows for selector \"{0}\"", rowSelector); + + return null; + } } private string JsonParseFieldSelector(JToken parsedJson, string rowSelector) diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannDefinition.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannDefinition.cs index d3f6019da..bfd455f38 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannDefinition.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannDefinition.cs @@ -159,6 +159,7 @@ public class RowsBlock : SelectorBlock public SelectorBlock Dateheaders { get; set; } public SelectorBlock Count { get; set; } public bool Multiple { get; set; } + public bool MissingAttributeEqualsNoResults { get; set; } } public class SearchPathBlock : RequestBlock diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs index de392978e..379959a76 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs @@ -90,8 +90,14 @@ public IList ParseResponse(IndexerResponse indexerResponse) } var rowsArray = JsonParseRowsSelector(parsedJson, search.Rows.Selector); + if (rowsArray == null) { + if (search.Rows.MissingAttributeEqualsNoResults) + { + return releases; + } + throw new IndexerException(indexerResponse, "Error Parsing Rows Selector"); }