New: Fetch up to 1000 movies from Plex Watchlist

pull/10458/head
Bogdan 2 months ago
parent 3388fae1a5
commit 463741da1f

@ -13,10 +13,18 @@ namespace NzbDrone.Core.ImportLists.Plex
{
public class PlexImport : HttpImportListBase<PlexListSettings>
{
public readonly IPlexTvService _plexTvService;
public override string Name => "Plex Watchlist";
public override ImportListType ListType => ImportListType.Plex;
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(6);
public override bool Enabled => true;
public override bool EnableAuto => false;
public override int PageSize => 100;
public override TimeSpan RateLimit => TimeSpan.FromSeconds(5);
private readonly IPlexTvService _plexTvService;
public PlexImport(IPlexTvService plexTvService,
IHttpClient httpClient,
IImportListStatusService importListStatusService,
@ -28,11 +36,6 @@ namespace NzbDrone.Core.ImportLists.Plex
_plexTvService = plexTvService;
}
public override string Name => "Plex Watchlist";
public override int PageSize => 50;
public override bool Enabled => true;
public override bool EnableAuto => false;
public override ImportListFetchResult Fetch()
{
Settings.Validate().Filter("AccessToken").ThrowOnError();
@ -47,10 +50,7 @@ namespace NzbDrone.Core.ImportLists.Plex
public override IImportListRequestGenerator GetRequestGenerator()
{
return new PlexListRequestGenerator(_plexTvService, PageSize)
{
Settings = Settings
};
return new PlexListRequestGenerator(_plexTvService, Settings, PageSize);
}
public override object RequestAction(string action, IDictionary<string, string> query)

@ -5,13 +5,16 @@ namespace NzbDrone.Core.ImportLists.Plex
{
public class PlexListRequestGenerator : IImportListRequestGenerator
{
private const int MaxPages = 10;
private readonly IPlexTvService _plexTvService;
private readonly PlexListSettings _settings;
private readonly int _pageSize;
public PlexListSettings Settings { get; set; }
public PlexListRequestGenerator(IPlexTvService plexTvService, int pageSize)
public PlexListRequestGenerator(IPlexTvService plexTvService, PlexListSettings settings, int pageSize)
{
_plexTvService = plexTvService;
_settings = settings;
_pageSize = pageSize;
}
@ -26,11 +29,9 @@ namespace NzbDrone.Core.ImportLists.Plex
private IEnumerable<ImportListRequest> GetMoviesRequest()
{
var maxPages = 10;
for (var page = 0; page < maxPages; page++)
for (var page = 0; page < MaxPages; page++)
{
yield return new ImportListRequest(_plexTvService.GetWatchlist(Settings.AccessToken, _pageSize, page * _pageSize));
yield return new ImportListRequest(_plexTvService.GetWatchlist(_settings.AccessToken, _pageSize, page * _pageSize));
}
}
}

Loading…
Cancel
Save