From bbea256c854033ca7a9fbbdacee8886c5a5dcd4b Mon Sep 17 00:00:00 2001 From: Qstick Date: Tue, 15 Jun 2021 23:53:52 -0400 Subject: [PATCH] Fixed: Dynamic page size for Cardigann search path paging Fixes some indexers that have arbitrary paging paths in their search-paths definitions. Set page size based on first request, break out if a request down the line returns less results. --- src/NzbDrone.Core/Indexers/HttpIndexerBase.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs index 87c3a692e..99e0bdedd 100644 --- a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs +++ b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs @@ -176,12 +176,16 @@ namespace NzbDrone.Core.Indexers { var pagedReleases = new List(); + var pageSize = PageSize; + foreach (var request in pageableRequest) { url = request.Url.FullUri; var page = await FetchPage(request, parser); + pageSize = pageSize == 1 ? page.Releases.Count : pageSize; + result.Queries.Add(page); pagedReleases.AddRange(page.Releases); @@ -213,7 +217,7 @@ namespace NzbDrone.Core.Indexers break; } - if (!IsFullPage(page.Releases)) + if (!IsFullPage(page.Releases, pageSize)) { break; } @@ -336,9 +340,9 @@ namespace NzbDrone.Core.Indexers return Capabilities ?? ((IndexerDefinition)Definition).Capabilities; } - protected virtual bool IsFullPage(IList page) + protected virtual bool IsFullPage(IList page, int pageSize) { - return PageSize != 0 && page.Count >= PageSize; + return pageSize != 0 && page.Count >= pageSize; } protected virtual async Task FetchPage(IndexerRequest request, IParseIndexerResponse parser)