diff --git a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs index 9f85dc1a1..38de55f9d 100644 --- a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs +++ b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs @@ -47,7 +47,7 @@ namespace NzbDrone.Core.Indexers return Task.FromResult>(Array.Empty()); } - return FetchReleases(g => g.GetRecentRequests(), true); + return FetchReleases(g => g.GetRecentRequests(), false, true); } public override Task> Fetch(MovieSearchCriteria searchCriteria) @@ -57,7 +57,7 @@ namespace NzbDrone.Core.Indexers return Task.FromResult>(Array.Empty()); } - return FetchReleases(g => g.GetSearchRequests(searchCriteria)); + return FetchReleases(g => g.GetSearchRequests(searchCriteria), searchCriteria.InteractiveSearch); } protected IndexerPageableRequestChain GetRequestChain(SearchCriteriaBase searchCriteria = null) @@ -92,11 +92,12 @@ namespace NzbDrone.Core.Indexers return new HttpRequest(link); } - protected virtual async Task> FetchReleases(Func pageableRequestChainSelector, bool isRecent = false) + protected virtual async Task> FetchReleases(Func pageableRequestChainSelector, bool interactiveSearch = false, bool isRecent = false) { var releases = new List(); var url = string.Empty; var minimumBackoff = TimeSpan.FromHours(1); + var automaticSearchRateLimit = TimeSpan.FromSeconds(30); try { @@ -128,6 +129,11 @@ namespace NzbDrone.Core.Indexers { url = request.Url.FullUri; + if (!interactiveSearch && request.HttpRequest.RateLimit < automaticSearchRateLimit) + { + request.HttpRequest.RateLimit = automaticSearchRateLimit; + } + var page = await FetchPage(request, parser); pagedReleases.AddRange(page);