mirror of
https://github.com/Radarr/Radarr
synced 2025-12-06 08:28:50 +01:00
Fixed: TMDb List Paging (#11201)
This commit is contained in:
parent
3fcbaf9259
commit
110a338fb6
5 changed files with 44 additions and 7 deletions
|
|
@ -30,6 +30,8 @@ public abstract class HttpImportListBase<TSettings> : ImportListBase<TSettings>
|
|||
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 @@ protected virtual ImportListFetchResult FetchMovies(Func<IImportListRequestGener
|
|||
break;
|
||||
}
|
||||
|
||||
if (!IsFullPage(page))
|
||||
if (!UsePreGeneratedPages && !IsFullPage(page))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
|
@ -210,7 +212,26 @@ protected virtual ValidationFailure TestConnection()
|
|||
{
|
||||
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())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public virtual ImportListPageableRequestChain GetMovies()
|
|||
|
||||
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 @@ private IEnumerable<ImportListRequest> GetMoviesRequest()
|
|||
.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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -119,7 +119,8 @@ private IEnumerable<ImportListRequest> GetMoviesRequests()
|
|||
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ public abstract class TMDbImportListBase<TSettings> : HttpImportListBase<TSettin
|
|||
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;
|
||||
|
|
|
|||
|
|
@ -52,17 +52,25 @@ private IEnumerable<ImportListRequest> GetMoviesRequests()
|
|||
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue