1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-11-24 08:42:19 +02:00

New: Fetch up to 1000 series from Plex Watchlist

This commit is contained in:
Bogdan 2024-09-17 23:19:27 +03:00 committed by Mark McDowall
parent 27da041388
commit 0fa8e24f48
2 changed files with 16 additions and 19 deletions

View File

@ -14,11 +14,15 @@ namespace NzbDrone.Core.ImportLists.Plex
{
public class PlexImport : HttpImportListBase<PlexListSettings>
{
public readonly IPlexTvService _plexTvService;
public override string Name => _localizationService.GetLocalizedString("ImportListsPlexSettingsWatchlistName");
public override ImportListType ListType => ImportListType.Plex;
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(6);
public override int PageSize => 100;
public override TimeSpan RateLimit => TimeSpan.FromSeconds(5);
private readonly IPlexTvService _plexTvService;
public PlexImport(IPlexTvService plexTvService,
IHttpClient httpClient,
IImportListStatusService importListStatusService,
@ -31,15 +35,10 @@ public PlexImport(IPlexTvService plexTvService,
_plexTvService = plexTvService;
}
public override string Name => _localizationService.GetLocalizedString("ImportListsPlexSettingsWatchlistName");
public override int PageSize => 50;
public override ImportListFetchResult Fetch()
{
Settings.Validate().Filter("AccessToken").ThrowOnError();
// var generator = GetRequestGenerator();
return FetchItems(g => g.GetListItems());
}
@ -50,10 +49,7 @@ public override IParseImportListResponse GetParser()
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)

View File

@ -5,13 +5,16 @@ namespace NzbDrone.Core.ImportLists.Plex
{
public class PlexListRequestGenerator : IImportListRequestGenerator
{
private readonly IPlexTvService _plexTvService;
private readonly int _pageSize;
public PlexListSettings Settings { get; set; }
private const int MaxPages = 10;
public PlexListRequestGenerator(IPlexTvService plexTvService, int pageSize)
private readonly IPlexTvService _plexTvService;
private readonly PlexListSettings _settings;
private readonly int _pageSize;
public PlexListRequestGenerator(IPlexTvService plexTvService, PlexListSettings settings, int pageSize)
{
_plexTvService = plexTvService;
_settings = settings;
_pageSize = pageSize;
}
@ -26,11 +29,9 @@ public virtual ImportListPageableRequestChain GetListItems()
private IEnumerable<ImportListRequest> GetSeriesRequest()
{
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));
}
}
}