From a12001a5ef1a0e46b65737f92b3c60500f5b1f2a Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 2 Feb 2023 19:33:47 +0200 Subject: [PATCH] Fixed: (XSpeeds) Category filtering if single, add sorting to skip sticky --- .../Indexers/Definitions/XSpeeds.cs | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/Definitions/XSpeeds.cs b/src/NzbDrone.Core/Indexers/Definitions/XSpeeds.cs index e3099a2f1..348c03c43 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/XSpeeds.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/XSpeeds.cs @@ -41,7 +41,7 @@ public class XSpeeds : TorrentIndexerBase public override IIndexerRequestGenerator GetRequestGenerator() { - return new XSpeedsRequestGenerator(Settings); + return new XSpeedsRequestGenerator(Settings, Capabilities); } public override IParseIndexerResponse GetParser() @@ -166,17 +166,19 @@ public class XSpeeds : TorrentIndexerBase public class XSpeedsRequestGenerator : IIndexerRequestGenerator { private readonly UserPassTorrentBaseSettings _settings; + private readonly IndexerCapabilities _capabilities; - public XSpeedsRequestGenerator(UserPassTorrentBaseSettings settings) + public XSpeedsRequestGenerator(UserPassTorrentBaseSettings settings, IndexerCapabilities capabilities) { _settings = settings; + _capabilities = capabilities; } public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}")); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories)); return pageableRequests; } @@ -185,7 +187,7 @@ public class XSpeedsRequestGenerator : IIndexerRequestGenerator { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}")); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories)); return pageableRequests; } @@ -194,7 +196,7 @@ public class XSpeedsRequestGenerator : IIndexerRequestGenerator { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedTvSearchString}")); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedTvSearchString}", searchCriteria.Categories)); return pageableRequests; } @@ -203,7 +205,7 @@ public class XSpeedsRequestGenerator : IIndexerRequestGenerator { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}")); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories)); return pageableRequests; } @@ -212,14 +214,22 @@ public class XSpeedsRequestGenerator : IIndexerRequestGenerator { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}")); + pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories)); return pageableRequests; } - private IEnumerable GetPagedRequests(string term) + private IEnumerable GetPagedRequests(string term, int[] categories) { - var parameters = new NameValueCollection(); + var categoryMapping = _capabilities.Categories.MapTorznabCapsToTrackers(categories); + + var parameters = new NameValueCollection + { + { "category", categoryMapping.FirstIfSingleOrDefault("0") }, // multi category search not supported + { "include_dead_torrents", "yes" }, + { "sort", "added" }, + { "order", "desc" } + }; term = Regex.Replace(term, @"[ -._]+", " ").Trim(); @@ -228,8 +238,6 @@ public class XSpeedsRequestGenerator : IIndexerRequestGenerator parameters.Set("do", "search"); parameters.Set("keywords", term); parameters.Set("search_type", "t_name"); - parameters.Set("category", "0"); // multi category search not supported - parameters.Set("include_dead_torrents", "no"); } var searchUrl = _settings.BaseUrl + "browse.php";