From b0a782d8ac18c008077fd898ecc2ee2596baf64c Mon Sep 17 00:00:00 2001 From: CodeMonkey Date: Mon, 18 Jan 2021 17:59:17 -0500 Subject: [PATCH] SubsPlease: Enable searching by resolution (#10861) --- src/Jackett.Common/Indexers/SubsPlease.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Jackett.Common/Indexers/SubsPlease.cs b/src/Jackett.Common/Indexers/SubsPlease.cs index 7d19f6804..478767854 100644 --- a/src/Jackett.Common/Indexers/SubsPlease.cs +++ b/src/Jackett.Common/Indexers/SubsPlease.cs @@ -69,9 +69,13 @@ namespace Jackett.Common.Indexers private async Task> PerformSearch(TorznabQuery query) { // If the search terms contain [SubsPlease] or SubsPlease, remove them from the query sent to the API - // It's ok if this results in an empty search term string searchTerm = Regex.Replace(query.SearchTerm, "\\[?SubsPlease\\]?\\s*", string.Empty, RegexOptions.IgnoreCase).Trim(); + // If the search terms contain a resolution, remove it from the query sent to the API + Match resMatch = Regex.Match(searchTerm, "\\d{3,4}[p|P]"); + if (resMatch.Success) + searchTerm = searchTerm.Replace(resMatch.Value, string.Empty); + var queryParameters = new NameValueCollection { { "f", "search" }, @@ -83,7 +87,13 @@ namespace Jackett.Common.Indexers throw new WebException($"SubsPlease search returned unexpected result. Expected 200 OK but got {response.Status}.", WebExceptionStatus.ProtocolError); var results = ParseApiResults(response.ContentString); - return results.Where(release => query.MatchQueryStringAND(release.Title)); + var filteredResults = results.Where(release => query.MatchQueryStringAND(release.Title)); + + // If we detected a resolution in the search terms earlier, filter by it + if (resMatch.Success) + filteredResults = filteredResults.Where(release => release.Title.IndexOf(resMatch.Value, StringComparison.OrdinalIgnoreCase) >= 0); + + return filteredResults; } private async Task> FetchNewReleases()