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()