1
0
mirror of https://github.com/Radarr/Radarr.git synced 2026-03-05 13:21:25 -05:00

Fixed: TMDb List Paging (#11201)

This commit is contained in:
bakerboy448
2025-08-16 09:20:34 -05:00
committed by GitHub
parent 3fcbaf9259
commit 110a338fb6
5 changed files with 44 additions and 7 deletions

View File

@@ -30,6 +30,8 @@ namespace NzbDrone.Core.ImportLists
public virtual int PageSize => 0;
public virtual TimeSpan RateLimit => TimeSpan.FromSeconds(2);
protected virtual bool UsePreGeneratedPages => false;
public abstract IImportListRequestGenerator GetRequestGenerator();
public abstract IParseImportListResponse GetParser();
@@ -79,7 +81,7 @@ namespace NzbDrone.Core.ImportLists
break;
}
if (!IsFullPage(page))
if (!UsePreGeneratedPages && !IsFullPage(page))
{
break;
}
@@ -210,7 +212,26 @@ namespace NzbDrone.Core.ImportLists
{
var parser = GetParser();
var generator = GetRequestGenerator();
var releases = FetchPage(generator.GetMovies().GetAllTiers().First().First(), parser);
var pageableRequests = generator.GetMovies();
var allTiers = pageableRequests.GetAllTiers();
if (!allTiers.Any())
{
return new NzbDroneValidationFailure(string.Empty,
"No pages were returned from your import list, please check your settings and the log for details.")
{ IsWarning = true };
}
var firstTier = allTiers.First();
if (!firstTier.Any())
{
return new NzbDroneValidationFailure(string.Empty,
"No data could be retrieved from your import list, please check your settings.")
{ IsWarning = true };
}
var firstRequest = firstTier.First();
var releases = FetchPage(firstRequest, parser);
if (releases.Empty())
{

View File

@@ -24,7 +24,7 @@ namespace NzbDrone.Core.ImportLists.TMDb.List
private IEnumerable<ImportListRequest> GetMoviesRequest()
{
Logger.Info("Importing TMDb movies from list: {0}", Settings.ListId);
Logger.Info("TMDb List {0}: Importing movies", Settings.ListId);
var requestBuilder = RequestBuilder.Create()
.SetSegment("api", "4")
@@ -32,19 +32,25 @@ namespace NzbDrone.Core.ImportLists.TMDb.List
.SetSegment("id", Settings.ListId)
.SetSegment("secondaryRoute", "");
Logger.Debug("Getting total pages that TMDb List: {0} consists of", Settings.ListId);
Logger.Trace("TMDb List {0}: Getting total pages", Settings.ListId);
var jsonResponse = JsonConvert.DeserializeObject<MovieSearchResource>(HttpClient.Execute(requestBuilder.Build()).Content);
MaxPages = jsonResponse.TotalPages;
if (jsonResponse.TotalPages > 1)
{
Logger.Debug("TMDb List {0}: processing {1} pages", Settings.ListId, MaxPages);
}
for (var pageNumber = 1; pageNumber <= MaxPages; pageNumber++)
{
requestBuilder.AddQueryParam("page", pageNumber, true);
var request = requestBuilder.Build();
Logger.Debug("Importing TMDb movies from: {0}", request.Url);
Logger.Debug("TMDb List {0}: Processing page {1} of {2}", Settings.ListId, pageNumber, MaxPages);
Logger.Trace("TMDb List {0}: Request URL: {1}", Settings.ListId, request.Url);
yield return new ImportListRequest(request);
}

View File

@@ -119,7 +119,8 @@ namespace NzbDrone.Core.ImportLists.TMDb.Popular
var request = requestBuilder.Build();
Logger.Debug("Importing TMDb movies from: {0}", request.Url);
Logger.Debug("TMDb Popular: Processing page {0} of {1}", pageNumber, MaxPages);
Logger.Trace("TMDb Popular: Request URL: {0}", request.Url);
yield return new ImportListRequest(request);
}

View File

@@ -14,6 +14,7 @@ namespace NzbDrone.Core.ImportLists.TMDb
public override ImportListType ListType => ImportListType.TMDB;
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(12);
public override int PageSize => 20;
protected override bool UsePreGeneratedPages => true;
public readonly ISearchForNewMovie _skyhookProxy;
public readonly IHttpRequestBuilderFactory _requestBuilder;

View File

@@ -52,17 +52,25 @@ namespace NzbDrone.Core.ImportLists.TMDb.User
requestBuilder.Method = HttpMethod.Get;
Logger.Trace("TMDb User {0}: Getting total pages", (TMDbUserListType)Settings.ListType);
var jsonResponse = JsonConvert.DeserializeObject<MovieSearchResource>(HttpClient.Execute(requestBuilder.Build()).Content);
MaxPages = jsonResponse.TotalPages;
if (jsonResponse.TotalPages > 1)
{
Logger.Debug("TMDb User {0}: processing {1} pages", (TMDbUserListType)Settings.ListType, MaxPages);
}
for (var pageNumber = 1; pageNumber <= MaxPages; pageNumber++)
{
requestBuilder.AddQueryParam("page", pageNumber, true);
var request = requestBuilder.Build();
Logger.Debug("Importing TMDb movies from: {0}", request.Url);
Logger.Debug("TMDb User {0}: Processing page {1} of {2}", (TMDbUserListType)Settings.ListType, pageNumber, MaxPages);
Logger.Trace("TMDb User {0}: Request URL: {1}", (TMDbUserListType)Settings.ListType, request.Url);
yield return new ImportListRequest(request);
}