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 int PageSize => 0;
|
||||||
public virtual TimeSpan RateLimit => TimeSpan.FromSeconds(2);
|
public virtual TimeSpan RateLimit => TimeSpan.FromSeconds(2);
|
||||||
|
|
||||||
|
protected virtual bool UsePreGeneratedPages => false;
|
||||||
|
|
||||||
public abstract IImportListRequestGenerator GetRequestGenerator();
|
public abstract IImportListRequestGenerator GetRequestGenerator();
|
||||||
public abstract IParseImportListResponse GetParser();
|
public abstract IParseImportListResponse GetParser();
|
||||||
|
|
||||||
|
|
@ -79,7 +81,7 @@ protected virtual ImportListFetchResult FetchMovies(Func<IImportListRequestGener
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsFullPage(page))
|
if (!UsePreGeneratedPages && !IsFullPage(page))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -210,7 +212,26 @@ protected virtual ValidationFailure TestConnection()
|
||||||
{
|
{
|
||||||
var parser = GetParser();
|
var parser = GetParser();
|
||||||
var generator = GetRequestGenerator();
|
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())
|
if (releases.Empty())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ public virtual ImportListPageableRequestChain GetMovies()
|
||||||
|
|
||||||
private IEnumerable<ImportListRequest> GetMoviesRequest()
|
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()
|
var requestBuilder = RequestBuilder.Create()
|
||||||
.SetSegment("api", "4")
|
.SetSegment("api", "4")
|
||||||
|
|
@ -32,19 +32,25 @@ private IEnumerable<ImportListRequest> GetMoviesRequest()
|
||||||
.SetSegment("id", Settings.ListId)
|
.SetSegment("id", Settings.ListId)
|
||||||
.SetSegment("secondaryRoute", "");
|
.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);
|
var jsonResponse = JsonConvert.DeserializeObject<MovieSearchResource>(HttpClient.Execute(requestBuilder.Build()).Content);
|
||||||
|
|
||||||
MaxPages = jsonResponse.TotalPages;
|
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++)
|
for (var pageNumber = 1; pageNumber <= MaxPages; pageNumber++)
|
||||||
{
|
{
|
||||||
requestBuilder.AddQueryParam("page", pageNumber, true);
|
requestBuilder.AddQueryParam("page", pageNumber, true);
|
||||||
|
|
||||||
var request = requestBuilder.Build();
|
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);
|
yield return new ImportListRequest(request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,8 @@ private IEnumerable<ImportListRequest> GetMoviesRequests()
|
||||||
|
|
||||||
var request = requestBuilder.Build();
|
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);
|
yield return new ImportListRequest(request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ public abstract class TMDbImportListBase<TSettings> : HttpImportListBase<TSettin
|
||||||
public override ImportListType ListType => ImportListType.TMDB;
|
public override ImportListType ListType => ImportListType.TMDB;
|
||||||
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(12);
|
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(12);
|
||||||
public override int PageSize => 20;
|
public override int PageSize => 20;
|
||||||
|
protected override bool UsePreGeneratedPages => true;
|
||||||
|
|
||||||
public readonly ISearchForNewMovie _skyhookProxy;
|
public readonly ISearchForNewMovie _skyhookProxy;
|
||||||
public readonly IHttpRequestBuilderFactory _requestBuilder;
|
public readonly IHttpRequestBuilderFactory _requestBuilder;
|
||||||
|
|
|
||||||
|
|
@ -52,17 +52,25 @@ private IEnumerable<ImportListRequest> GetMoviesRequests()
|
||||||
|
|
||||||
requestBuilder.Method = HttpMethod.Get;
|
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);
|
var jsonResponse = JsonConvert.DeserializeObject<MovieSearchResource>(HttpClient.Execute(requestBuilder.Build()).Content);
|
||||||
|
|
||||||
MaxPages = jsonResponse.TotalPages;
|
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++)
|
for (var pageNumber = 1; pageNumber <= MaxPages; pageNumber++)
|
||||||
{
|
{
|
||||||
requestBuilder.AddQueryParam("page", pageNumber, true);
|
requestBuilder.AddQueryParam("page", pageNumber, true);
|
||||||
|
|
||||||
var request = requestBuilder.Build();
|
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);
|
yield return new ImportListRequest(request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue