From 51b432692042a642b767063b31f51fa13ecb367e Mon Sep 17 00:00:00 2001 From: kaso17 Date: Fri, 2 Dec 2016 13:05:00 +0100 Subject: [PATCH] Cardigann: Add support for :root pseudo selector --- src/Jackett/Indexers/CardigannIndexer.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Jackett/Indexers/CardigannIndexer.cs b/src/Jackett/Indexers/CardigannIndexer.cs index 0f2d8d310..a1a73755f 100644 --- a/src/Jackett/Indexers/CardigannIndexer.cs +++ b/src/Jackett/Indexers/CardigannIndexer.cs @@ -606,6 +606,20 @@ namespace Jackett.Indexers return Data; } + protected IElement QuerySelector(IElement Element, string Selector) + { + // AngleSharp doesn't support the :root pseudo selector, so we check for it manually + if (Selector.StartsWith(":root")) + { + Selector = Selector.Substring(5); + while (Element.ParentElement != null) + { + Element = Element.ParentElement; + } + } + return Element.QuerySelector(Selector); + } + protected string handleSelector(selectorBlock Selector, IElement Dom) { if (Selector.Text != null) @@ -618,7 +632,7 @@ namespace Jackett.Indexers if (Selector.Selector != null) { - selection = Dom.QuerySelector(Selector.Selector); + selection = QuerySelector(Dom, Selector.Selector); if (selection == null) { throw new Exception(string.Format("Selector \"{0}\" didn't match {1}", Selector.Selector, Dom.OuterHtml)); @@ -637,7 +651,7 @@ namespace Jackett.Indexers { foreach(var Case in Selector.Case) { - if (selection.Matches(Case.Key) || selection.QuerySelector(Case.Key) != null) + if (selection.Matches(Case.Key) || QuerySelector(selection, Case.Key) != null) { value = Case.Value; break;