1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-20 01:42:35 +01:00

New: Fetch up to 1000 movies from Plex Watchlist

This commit is contained in:
Bogdan 2024-09-17 23:19:27 +03:00
parent 3388fae1a5
commit 463741da1f
2 changed files with 19 additions and 18 deletions

View File

@ -13,10 +13,18 @@ namespace NzbDrone.Core.ImportLists.Plex
{ {
public class PlexImport : HttpImportListBase<PlexListSettings> public class PlexImport : HttpImportListBase<PlexListSettings>
{ {
public readonly IPlexTvService _plexTvService; public override string Name => "Plex Watchlist";
public override ImportListType ListType => ImportListType.Plex; public override ImportListType ListType => ImportListType.Plex;
public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(6); 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, public PlexImport(IPlexTvService plexTvService,
IHttpClient httpClient, IHttpClient httpClient,
IImportListStatusService importListStatusService, IImportListStatusService importListStatusService,
@ -28,11 +36,6 @@ public PlexImport(IPlexTvService plexTvService,
_plexTvService = plexTvService; _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() public override ImportListFetchResult Fetch()
{ {
Settings.Validate().Filter("AccessToken").ThrowOnError(); Settings.Validate().Filter("AccessToken").ThrowOnError();
@ -47,10 +50,7 @@ public override IParseImportListResponse GetParser()
public override IImportListRequestGenerator GetRequestGenerator() public override IImportListRequestGenerator GetRequestGenerator()
{ {
return new PlexListRequestGenerator(_plexTvService, PageSize) return new PlexListRequestGenerator(_plexTvService, Settings, PageSize);
{
Settings = Settings
};
} }
public override object RequestAction(string action, IDictionary<string, string> query) 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 public class PlexListRequestGenerator : IImportListRequestGenerator
{ {
private readonly IPlexTvService _plexTvService; private const int MaxPages = 10;
private readonly int _pageSize;
public PlexListSettings Settings { get; set; }
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; _plexTvService = plexTvService;
_settings = settings;
_pageSize = pageSize; _pageSize = pageSize;
} }
@ -26,11 +29,9 @@ public virtual ImportListPageableRequestChain GetMovies()
private IEnumerable<ImportListRequest> GetMoviesRequest() 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));
} }
} }
} }