mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
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.
This commit is contained in:
@@ -176,12 +176,16 @@ namespace NzbDrone.Core.Indexers
|
|||||||
{
|
{
|
||||||
var pagedReleases = new List<ReleaseInfo>();
|
var pagedReleases = new List<ReleaseInfo>();
|
||||||
|
|
||||||
|
var pageSize = PageSize;
|
||||||
|
|
||||||
foreach (var request in pageableRequest)
|
foreach (var request in pageableRequest)
|
||||||
{
|
{
|
||||||
url = request.Url.FullUri;
|
url = request.Url.FullUri;
|
||||||
|
|
||||||
var page = await FetchPage(request, parser);
|
var page = await FetchPage(request, parser);
|
||||||
|
|
||||||
|
pageSize = pageSize == 1 ? page.Releases.Count : pageSize;
|
||||||
|
|
||||||
result.Queries.Add(page);
|
result.Queries.Add(page);
|
||||||
|
|
||||||
pagedReleases.AddRange(page.Releases);
|
pagedReleases.AddRange(page.Releases);
|
||||||
@@ -213,7 +217,7 @@ namespace NzbDrone.Core.Indexers
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsFullPage(page.Releases))
|
if (!IsFullPage(page.Releases, pageSize))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -336,9 +340,9 @@ namespace NzbDrone.Core.Indexers
|
|||||||
return Capabilities ?? ((IndexerDefinition)Definition).Capabilities;
|
return Capabilities ?? ((IndexerDefinition)Definition).Capabilities;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual bool IsFullPage(IList<ReleaseInfo> page)
|
protected virtual bool IsFullPage(IList<ReleaseInfo> page, int pageSize)
|
||||||
{
|
{
|
||||||
return PageSize != 0 && page.Count >= PageSize;
|
return pageSize != 0 && page.Count >= pageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual async Task<IndexerQueryResult> FetchPage(IndexerRequest request, IParseIndexerResponse parser)
|
protected virtual async Task<IndexerQueryResult> FetchPage(IndexerRequest request, IParseIndexerResponse parser)
|
||||||
|
Reference in New Issue
Block a user