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 546725ca0..6ed288b71 100644 --- a/src/NzbDrone.Core/ImportLists/Radarr/RadarrV3Proxy.cs +++ b/src/NzbDrone.Core/ImportLists/Radarr/RadarrV3Proxy.cs @@ -31,22 +31,26 @@ namespace NzbDrone.Core.ImportLists.Radarr 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 @@ namespace NzbDrone.Core.ImportLists.Radarr 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 29bff5a56..a5a79c42a 100644 --- a/src/Radarr.Api.V3/Movies/MovieController.cs +++ b/src/Radarr.Api.V3/Movies/MovieController.cs @@ -108,7 +108,7 @@ namespace Radarr.Api.V3.Movies } [HttpGet] - public List AllMovie(int? tmdbId) + public List AllMovie(int? tmdbId, bool excludeLocalCovers = false) { var moviesResources = new List(); @@ -135,7 +135,10 @@ namespace Radarr.Api.V3.Movies var tdict = translations.ToDictionary(x => x.MovieMetadataId); - coverFileInfos = _coverMapper.GetCoverFileInfos(); + if (!excludeLocalCovers) + { + coverFileInfos = _coverMapper.GetCoverFileInfos(); + } var movies = movieTask.GetAwaiter().GetResult(); @@ -147,7 +150,10 @@ namespace Radarr.Api.V3.Movies moviesResources.Add(movie.ToResource(availDelay, translation, _qualityUpgradableSpecification)); } - MapCoversToLocal(moviesResources, coverFileInfos); + if (!excludeLocalCovers) + { + MapCoversToLocal(moviesResources, coverFileInfos); + } var rootFolders = _rootFolderService.All(); @@ -271,10 +277,7 @@ namespace Radarr.Api.V3.Movies [NonAction] public void Handle(MovieFileImportedEvent message) { - var availDelay = _configService.AvailabilityDelay; - var translations = _movieTranslationService.GetAllTranslationsForMovieMetadata(message.ImportedMovie.Movie.MovieMetadataId); - var translation = GetMovieTranslation(translations, message.ImportedMovie.Movie.MovieMetadata, (Language)_configService.MovieInfoLanguage); - BroadcastResourceChange(ModelAction.Updated, message.ImportedMovie.Movie.ToResource(availDelay, translation, _qualityUpgradableSpecification)); + BroadcastResourceChange(ModelAction.Updated, MapToResource(message.ImportedMovie.Movie)); } [NonAction] @@ -291,19 +294,13 @@ namespace Radarr.Api.V3.Movies [NonAction] public void Handle(MovieUpdatedEvent message) { - var availDelay = _configService.AvailabilityDelay; - var translations = _movieTranslationService.GetAllTranslationsForMovieMetadata(message.Movie.MovieMetadataId); - var translation = GetMovieTranslation(translations, message.Movie.MovieMetadata, (Language)_configService.MovieInfoLanguage); - BroadcastResourceChange(ModelAction.Updated, message.Movie.ToResource(availDelay, translation, _qualityUpgradableSpecification)); + BroadcastResourceChange(ModelAction.Updated, MapToResource(message.Movie)); } [NonAction] public void Handle(MovieEditedEvent message) { - var availDelay = _configService.AvailabilityDelay; - var translations = _movieTranslationService.GetAllTranslationsForMovieMetadata(message.Movie.MovieMetadataId); - var translation = GetMovieTranslation(translations, message.Movie.MovieMetadata, (Language)_configService.MovieInfoLanguage); - BroadcastResourceChange(ModelAction.Updated, message.Movie.ToResource(availDelay, translation, _qualityUpgradableSpecification)); + BroadcastResourceChange(ModelAction.Updated, MapToResource(message.Movie)); } [NonAction] @@ -318,10 +315,7 @@ namespace Radarr.Api.V3.Movies [NonAction] public void Handle(MovieRenamedEvent message) { - var availDelay = _configService.AvailabilityDelay; - var translations = _movieTranslationService.GetAllTranslationsForMovieMetadata(message.Movie.MovieMetadataId); - var translation = GetMovieTranslation(translations, message.Movie.MovieMetadata, (Language)_configService.MovieInfoLanguage); - BroadcastResourceChange(ModelAction.Updated, message.Movie.ToResource(availDelay, translation, _qualityUpgradableSpecification)); + BroadcastResourceChange(ModelAction.Updated, MapToResource(message.Movie)); } [NonAction] diff --git a/src/Radarr.Api.V3/Movies/MovieResource.cs b/src/Radarr.Api.V3/Movies/MovieResource.cs index e99990117..659fd1131 100644 --- a/src/Radarr.Api.V3/Movies/MovieResource.cs +++ b/src/Radarr.Api.V3/Movies/MovieResource.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using NzbDrone.Core.CustomFormats; using NzbDrone.Common.Extensions; +using NzbDrone.Core.CustomFormats; using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.Languages; using NzbDrone.Core.MediaCover;