Cleanup SearchCriteria, Pass Cats from Search to Indexers

This commit is contained in:
Qstick
2020-11-18 15:35:14 -05:00
parent 529102ebcf
commit 6100adc515
25 changed files with 89 additions and 176 deletions
@@ -82,15 +82,10 @@ namespace NzbDrone.Core.Indexers.Newznab
};
}
private NewznabSettings GetSettings(string url, string apiPath = null, int[] categories = null)
private NewznabSettings GetSettings(string url, string apiPath = null)
{
var settings = new NewznabSettings { BaseUrl = url };
if (categories != null)
{
settings.Categories = categories;
}
if (apiPath.IsNotNullOrWhiteSpace())
{
settings.ApiPath = apiPath;
@@ -123,17 +118,6 @@ namespace NzbDrone.Core.Indexers.Newznab
{
var capabilities = _capabilitiesProvider.GetCapabilities(Settings);
var notSupported = Settings.Categories.Except(CategoryIds(capabilities.Categories));
if (notSupported.Any())
{
_logger.Warn($"{Definition.Name} does not support the following categories: {string.Join(", ", notSupported)}. You should probably remove them.");
if (notSupported.Count() == Settings.Categories.Count())
{
return new ValidationFailure(string.Empty, $"This indexer does not support any of the selected categories! (You may need to turn on advanced settings to see them)");
}
}
if (capabilities.SearchParams != null && capabilities.SearchParams.Contains(SearchParam.Q))
{
return null;
@@ -75,11 +75,11 @@ namespace NzbDrone.Core.Indexers.Newznab
// Some indexers might forget to enable movie search, but normal search still works fine. Thus we force a normal search.
if (capabilities.MovieSearchParams != null)
{
pageableRequests.Add(GetPagedRequests(MaxPages, Settings.Categories, "movie", ""));
pageableRequests.Add(GetPagedRequests(MaxPages, new int[] { 2000 }, "movie", ""));
}
else if (capabilities.SearchParams != null)
{
pageableRequests.Add(GetPagedRequests(MaxPages, Settings.Categories, "search", ""));
pageableRequests.Add(GetPagedRequests(MaxPages, new int[] { 2000 }, "search", ""));
}
return pageableRequests;
@@ -89,12 +89,12 @@ namespace NzbDrone.Core.Indexers.Newznab
{
var pageableRequests = new IndexerPageableRequestChain();
AddMovieIdPageableRequests(pageableRequests, MaxPages, Settings.Categories, searchCriteria);
AddMovieIdPageableRequests(pageableRequests, MaxPages, searchCriteria.Categories, searchCriteria);
return pageableRequests;
}
private void AddMovieIdPageableRequests(IndexerPageableRequestChain chain, int maxPages, IEnumerable<int> categories, SearchCriteriaBase searchCriteria)
private void AddMovieIdPageableRequests(IndexerPageableRequestChain chain, int maxPages, IEnumerable<int> categories, MovieSearchCriteria searchCriteria)
{
var includeTmdbSearch = SupportsTmdbSearch && searchCriteria.TmdbId > 0;
var includeImdbSearch = SupportsImdbSearch && searchCriteria.ImdbId.IsNotNullOrWhiteSpace();
@@ -136,20 +136,18 @@ namespace NzbDrone.Core.Indexers.Newznab
if (SupportsSearch)
{
chain.AddTier();
foreach (var queryTitle in searchCriteria.QueryTitles)
var searchQuery = searchCriteria.SearchTerm;
if (!Settings.RemoveYear)
{
var searchQuery = queryTitle;
if (!Settings.RemoveYear)
{
searchQuery = string.Format("{0}", searchQuery);
}
chain.Add(GetPagedRequests(MaxPages,
Settings.Categories,
"movie",
string.Format("&q={0}", NewsnabifyTitle(searchQuery))));
searchQuery = string.Format("{0}", searchQuery);
}
chain.Add(GetPagedRequests(MaxPages,
categories,
"movie",
string.Format("&q={0}", NewsnabifyTitle(searchQuery))));
}
}
@@ -36,14 +36,6 @@ namespace NzbDrone.Core.Indexers.Newznab
public NewznabSettingsValidator()
{
RuleFor(c => c).Custom((c, context) =>
{
if (c.Categories.Empty())
{
context.AddFailure("'Categories' must be provided");
}
});
RuleFor(c => c.BaseUrl).ValidRootUrl();
RuleFor(c => c.ApiPath).ValidUrlBase("/api");
RuleFor(c => c.ApiKey).NotEmpty().When(ShouldHaveApiKey);
@@ -59,7 +51,6 @@ namespace NzbDrone.Core.Indexers.Newznab
public NewznabSettings()
{
ApiPath = "/api";
Categories = new[] { 2000, 2010, 2020, 2030, 2035, 2040, 2045, 2050, 2060 };
MultiLanguages = new List<int>();
}
@@ -75,9 +66,6 @@ namespace NzbDrone.Core.Indexers.Newznab
[FieldDefinition(2, Label = "API Key", Privacy = PrivacyLevel.ApiKey)]
public string ApiKey { get; set; }
[FieldDefinition(3, Label = "Categories", HelpText = "Comma Separated list, leave blank to disable all categories", Advanced = true)]
public IEnumerable<int> Categories { get; set; }
[FieldDefinition(5, Label = "Additional Parameters", HelpText = "Additional Newznab parameters", Advanced = true)]
public string AdditionalParameters { get; set; }