From e715557a0d0230ace7e1e6454e79c954ef072455 Mon Sep 17 00:00:00 2001 From: Qstick Date: Mon, 17 Jul 2023 19:53:35 -0500 Subject: [PATCH] Fixed: Tweak all movies endpoint for better performance from Radarr lists --- .../ImportLists/Radarr/RadarrV3Proxy.cs | 30 ++++++++++------- src/Radarr.Api.V3/Movies/MovieController.cs | 32 ++++++++----------- src/Radarr.Api.V3/Movies/MovieResource.cs | 2 +- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/NzbDrone.Core/ImportLists/Radarr/RadarrV3Proxy.cs b/src/NzbDrone.Core/ImportLists/Radarr/RadarrV3Proxy.cs index 546725ca08..6ed288b719 100644 --- a/src/NzbDrone.Core/ImportLists/Radarr/RadarrV3Proxy.cs +++ b/src/NzbDrone.Core/ImportLists/Radarr/RadarrV3Proxy.cs @@ -31,22 +31,26 @@ public RadarrV3Proxy(IHttpClient httpClient, Logger logger) public List GetMovies(RadarrSettings settings) { - return Execute("/api/v3/movie", settings); + var requestBuilder = BuildRequest("/api/v3/movie", settings); + + requestBuilder.AddQueryParam("excludeLocalCovers", true); + + return Execute(requestBuilder, settings); } public List GetProfiles(RadarrSettings settings) { - return Execute("/api/v3/qualityprofile", settings); + return Execute(BuildRequest("/api/v3/qualityprofile", settings), settings); } public List GetRootFolders(RadarrSettings settings) { - return Execute("api/v3/rootfolder", settings); + return Execute(BuildRequest("api/v3/rootfolder", settings), settings); } public List GetTags(RadarrSettings settings) { - return Execute("/api/v3/tag", settings); + return Execute(BuildRequest("/api/v3/tag", settings), settings); } public ValidationFailure Test(RadarrSettings settings) @@ -81,19 +85,23 @@ public ValidationFailure Test(RadarrSettings settings) return null; } - private List Execute(string resource, RadarrSettings settings) + private HttpRequestBuilder BuildRequest(string resource, RadarrSettings settings) + { + var baseUrl = settings.BaseUrl.TrimEnd('/'); + + return new HttpRequestBuilder(baseUrl).Resource(resource) + .Accept(HttpAccept.Json) + .SetHeader("X-Api-Key", settings.ApiKey); + } + + private List Execute(HttpRequestBuilder requestBuilder, RadarrSettings settings) { if (settings.BaseUrl.IsNullOrWhiteSpace() || settings.ApiKey.IsNullOrWhiteSpace()) { return new List(); } - var baseUrl = settings.BaseUrl.TrimEnd('/'); - - var request = new HttpRequestBuilder(baseUrl).Resource(resource) - .Accept(HttpAccept.Json) - .SetHeader("X-Api-Key", settings.ApiKey) - .Build(); + var request = requestBuilder.Build(); var response = _httpClient.Get(request); diff --git a/src/Radarr.Api.V3/Movies/MovieController.cs b/src/Radarr.Api.V3/Movies/MovieController.cs index 29bff5a568..a5a79c42ae 100644 --- a/src/Radarr.Api.V3/Movies/MovieController.cs +++ b/src/Radarr.Api.V3/Movies/MovieController.cs @@ -108,7 +108,7 @@ public MovieController(IBroadcastSignalRMessage signalRBroadcaster, } [HttpGet] - public List AllMovie(int? tmdbId) + public List AllMovie(int? tmdbId, bool excludeLocalCovers = false) { var moviesResources = new List(); @@ -135,7 +135,10 @@ public List AllMovie(int? tmdbId) var tdict = translations.ToDictionary(x => x.MovieMetadataId); - coverFileInfos = _coverMapper.GetCoverFileInfos(); + if (!excludeLocalCovers) + { + coverFileInfos = _coverMapper.GetCoverFileInfos(); + } var movies = movieTask.GetAwaiter().GetResult(); @@ -147,7 +150,10 @@ public List AllMovie(int? tmdbId) moviesResources.Add(movie.ToResource(availDelay, translation, _qualityUpgradableSpecification)); } - MapCoversToLocal(moviesResources, coverFileInfos); + if (!excludeLocalCovers) + { + MapCoversToLocal(moviesResources, coverFileInfos); + } var rootFolders = _rootFolderService.All(); @@ -271,10 +277,7 @@ private void MapCoversToLocal(IEnumerable movies, Dictionary