From 0fa8e24f4886ce39b2cf86a4901cdcbe89aa0b39 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 17 Sep 2024 23:19:27 +0300 Subject: [PATCH] New: Fetch up to 1000 series from Plex Watchlist --- .../ImportLists/Plex/PlexImport.cs | 18 +++++++----------- .../Plex/PlexListRequestGenerator.cs | 13 +++++++------ 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/NzbDrone.Core/ImportLists/Plex/PlexImport.cs b/src/NzbDrone.Core/ImportLists/Plex/PlexImport.cs index ee50b3540..d7ec4b6a3 100644 --- a/src/NzbDrone.Core/ImportLists/Plex/PlexImport.cs +++ b/src/NzbDrone.Core/ImportLists/Plex/PlexImport.cs @@ -14,11 +14,15 @@ namespace NzbDrone.Core.ImportLists.Plex { public class PlexImport : HttpImportListBase { - 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 @@ namespace NzbDrone.Core.ImportLists.Plex _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 @@ 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 query) diff --git a/src/NzbDrone.Core/ImportLists/Plex/PlexListRequestGenerator.cs b/src/NzbDrone.Core/ImportLists/Plex/PlexListRequestGenerator.cs index 30909dd61..d0add0ffb 100644 --- a/src/NzbDrone.Core/ImportLists/Plex/PlexListRequestGenerator.cs +++ b/src/NzbDrone.Core/ImportLists/Plex/PlexListRequestGenerator.cs @@ -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 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)); } } }