mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2026-04-22 22:34:53 -04:00
New: Filter releases by search criteria
Co-Authored-By: Bogdan <mynameisbogdan@users.noreply.github.com>
This commit is contained in:
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using FluentValidation.Results;
|
||||
using NLog;
|
||||
@@ -104,7 +105,7 @@ namespace NzbDrone.Core.Indexers
|
||||
|
||||
public abstract IndexerCapabilities GetCapabilities();
|
||||
|
||||
protected virtual IList<ReleaseInfo> CleanupReleases(IEnumerable<ReleaseInfo> releases)
|
||||
protected virtual IList<ReleaseInfo> CleanupReleases(IEnumerable<ReleaseInfo> releases, SearchCriteriaBase searchCriteria)
|
||||
{
|
||||
var result = releases.ToList();
|
||||
|
||||
@@ -146,6 +147,24 @@ namespace NzbDrone.Core.Indexers
|
||||
return result.DistinctBy(v => v.Guid).ToList();
|
||||
}
|
||||
|
||||
protected IEnumerable<ReleaseInfo> FilterReleasesByQuery(IEnumerable<ReleaseInfo> releases, SearchCriteriaBase searchCriteria)
|
||||
{
|
||||
var commonWords = new[] { "and", "the", "an", "of" };
|
||||
|
||||
if (!searchCriteria.IsRssSearch && !searchCriteria.IsIdSearch)
|
||||
{
|
||||
var splitRegex = new Regex("[^\\w]+");
|
||||
|
||||
// split search term to individual terms for less aggressive filtering, filter common terms
|
||||
var terms = splitRegex.Split(searchCriteria.SearchTerm).Where(t => t.IsNotNullOrWhiteSpace() && t.Length > 1 && !commonWords.ContainsIgnoreCase(t));
|
||||
|
||||
// check in title and description for any term searched for
|
||||
releases = releases.Where(r => terms.Any(t => r.Title.ContainsIgnoreCase(t) || r.Description.ContainsIgnoreCase(t))).ToList();
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
protected virtual TSettings GetDefaultBaseUrl(TSettings settings)
|
||||
{
|
||||
var defaultLink = IndexerUrls.FirstOrDefault();
|
||||
|
||||
Reference in New Issue
Block a user