Fixed: Page Plex Watchlist results

Fixes #8223
Fixes #8042
pull/8285/head
Qstick 1 year ago
parent 15bafce8cc
commit ac26bcddd9

@ -28,6 +28,7 @@ namespace NzbDrone.Core.ImportLists.Plex
}
public override string Name => "Plex Watchlist";
public override int PageSize => 50;
public override bool Enabled => true;
public override bool EnableAuto => false;
@ -46,7 +47,7 @@ namespace NzbDrone.Core.ImportLists.Plex
public override IImportListRequestGenerator GetRequestGenerator()
{
return new PlexListRequestGenerator(_plexTvService)
return new PlexListRequestGenerator(_plexTvService, PageSize)
{
Settings = Settings
};

@ -6,11 +6,13 @@ namespace NzbDrone.Core.ImportLists.Plex
public class PlexListRequestGenerator : IImportListRequestGenerator
{
private readonly IPlexTvService _plexTvService;
private readonly int _pageSize;
public PlexListSettings Settings { get; set; }
public PlexListRequestGenerator(IPlexTvService plexTvService)
public PlexListRequestGenerator(IPlexTvService plexTvService, int pageSize)
{
_plexTvService = plexTvService;
_pageSize = pageSize;
}
public virtual ImportListPageableRequestChain GetMovies()
@ -24,9 +26,12 @@ namespace NzbDrone.Core.ImportLists.Plex
private IEnumerable<ImportListRequest> GetMoviesRequest()
{
var request = new ImportListRequest(_plexTvService.GetWatchlist(Settings.AccessToken));
var maxPages = 10;
yield return request;
for (var page = 0; page < maxPages; page++)
{
yield return new ImportListRequest(_plexTvService.GetWatchlist(Settings.AccessToken, _pageSize, page * _pageSize));
}
}
}
}

@ -15,7 +15,7 @@ namespace NzbDrone.Core.Notifications.Plex.PlexTv
PlexTvSignInUrlResponse GetSignInUrl(string callbackUrl, int pinId, string pinCode);
string GetAuthToken(int pinId);
void Ping(string authToken);
HttpRequest GetWatchlist(string authToken);
HttpRequest GetWatchlist(string authToken, int pageSize, int pageOffset);
}
public class PlexTvService : IPlexTvService
@ -94,7 +94,7 @@ namespace NzbDrone.Core.Notifications.Plex.PlexTv
_cache.Get(authToken, () => _proxy.Ping(_configService.PlexClientIdentifier, authToken), TimeSpan.FromHours(24));
}
public HttpRequest GetWatchlist(string authToken)
public HttpRequest GetWatchlist(string authToken, int pageSize, int pageOffset)
{
Ping(authToken);
@ -110,7 +110,9 @@ namespace NzbDrone.Core.Notifications.Plex.PlexTv
.AddQueryParam("includeFields", "title,type,year,ratingKey")
.AddQueryParam("includeElements", "Guid")
.AddQueryParam("sort", "watchlistedAt:desc")
.AddQueryParam("type", (int)PlexMediaType.Movie);
.AddQueryParam("type", (int)PlexMediaType.Movie)
.AddQueryParam("X-Plex-Container-Size", pageSize)
.AddQueryParam("X-Plex-Container-Start", pageOffset);
if (!string.IsNullOrWhiteSpace(authToken))
{

Loading…
Cancel
Save