From f587ae30841abde1f4d0ef60b71eb629bc0f9c47 Mon Sep 17 00:00:00 2001 From: kaso17 Date: Thu, 5 Jan 2017 19:15:39 +0100 Subject: [PATCH] Cardigann: add optional field modifier --- src/Jackett/Indexers/CardigannIndexer.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Jackett/Indexers/CardigannIndexer.cs b/src/Jackett/Indexers/CardigannIndexer.cs index afd98d306..9d958bac8 100644 --- a/src/Jackett/Indexers/CardigannIndexer.cs +++ b/src/Jackett/Indexers/CardigannIndexer.cs @@ -782,6 +782,8 @@ namespace Jackett.Indexers else if (Selector.Attribute != null) { value = selection.GetAttribute(Selector.Attribute); + if (value == null) + throw new Exception(string.Format("Attribute \"{0}\" is not set for element {1}", Selector.Attribute, selection.OuterHtml)); } else { @@ -929,12 +931,18 @@ namespace Jackett.Indexers // Parse fields foreach (var Field in Search.Fields) { + var FieldParts = Field.Key.Split('|'); + var FieldName = FieldParts[0]; + var FieldModifier = ""; + if (FieldParts.Length >= 2) + FieldModifier = FieldParts[1]; + string value = null; try { value = handleSelector(Field.Value, Row); value = ParseUtil.NormalizeSpace(value); - switch (Field.Key) + switch (FieldName) { case "download": if (value.StartsWith("magnet:")) @@ -1037,7 +1045,7 @@ namespace Jackett.Indexers } catch (Exception ex) { - if (OptionalFileds.Contains(Field.Key)) + if (OptionalFileds.Contains(Field.Key) || FieldModifier == "optional") continue; throw new Exception(string.Format("Error while parsing field={0}, selector={1}, value={2}: {3}", Field.Key, Field.Value.Selector, value, ex.Message)); }