From c539f9f7030f1775a42abeb0ff2cfca933440487 Mon Sep 17 00:00:00 2001 From: edwinbernadus Date: Wed, 28 Feb 2024 15:23:46 +0700 Subject: [PATCH 1/6] New: if search results empty, use GetMovieByImdbId --- .../MetadataSource/SkyHook/SkyHookProxy.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index 4050622c0..55ab30102 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -511,8 +511,27 @@ namespace NzbDrone.Core.MetadataSource.SkyHook request.SuppressHttpError = true; var httpResponse = _httpClient.Get>(request); + var output = httpResponse.Resource.SelectList(MapSearchResult); - return httpResponse.Resource.SelectList(MapSearchResult); + // if output is zero and format is ttXXXXXXXX, use GetMovieByImdbId + if (output.Count == 0 && title.Length == 10 && title.StartsWith("tt")) + { + var imdbid = title; + try + { + var movieLookup = GetMovieByImdbId(imdbid); + return new List + { + new Movie { MovieMetadata = movieLookup } + }; + } + catch (MovieNotFoundException) + { + return new List(); + } + } + + return output; } catch (HttpException ex) { From 123d90ccc10bc85886b8f65fc97eac7949268363 Mon Sep 17 00:00:00 2001 From: edwinbernadus Date: Fri, 1 Mar 2024 02:35:17 +0700 Subject: [PATCH 2/6] Revert "New: if search results empty, use GetMovieByImdbId" This reverts commit c539f9f7030f1775a42abeb0ff2cfca933440487. --- .../MetadataSource/SkyHook/SkyHookProxy.cs | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index 55ab30102..4050622c0 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -511,27 +511,8 @@ namespace NzbDrone.Core.MetadataSource.SkyHook request.SuppressHttpError = true; var httpResponse = _httpClient.Get>(request); - var output = httpResponse.Resource.SelectList(MapSearchResult); - // if output is zero and format is ttXXXXXXXX, use GetMovieByImdbId - if (output.Count == 0 && title.Length == 10 && title.StartsWith("tt")) - { - var imdbid = title; - try - { - var movieLookup = GetMovieByImdbId(imdbid); - return new List - { - new Movie { MovieMetadata = movieLookup } - }; - } - catch (MovieNotFoundException) - { - return new List(); - } - } - - return output; + return httpResponse.Resource.SelectList(MapSearchResult); } catch (HttpException ex) { From a1816c6ae9eaf5d2e8df30bd672f8a175cde6986 Mon Sep 17 00:00:00 2001 From: edwinbernadus Date: Wed, 28 Feb 2024 15:23:46 +0700 Subject: [PATCH 3/6] move logic to controller --- .../MetadataSource/ISearchForNewMovie.cs | 2 + .../Movies/MovieLookupController.cs | 48 +++++++++++++++---- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs b/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs index 2907fc117..f0b8d59ad 100644 --- a/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs +++ b/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs @@ -8,5 +8,7 @@ namespace NzbDrone.Core.MetadataSource List SearchForNewMovie(string title); MovieMetadata MapMovieToTmdbMovie(MovieMetadata movie); + + MovieMetadata GetMovieByImdbId(string imdbId); } } diff --git a/src/Radarr.Api.V3/Movies/MovieLookupController.cs b/src/Radarr.Api.V3/Movies/MovieLookupController.cs index 8a8c82498..7dd3f2d6b 100644 --- a/src/Radarr.Api.V3/Movies/MovieLookupController.cs +++ b/src/Radarr.Api.V3/Movies/MovieLookupController.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.RegularExpressions; using Microsoft.AspNetCore.Mvc; using NzbDrone.Core.Configuration; +using NzbDrone.Core.Exceptions; using NzbDrone.Core.Languages; using NzbDrone.Core.MediaCover; using NzbDrone.Core.MetadataSource; @@ -24,11 +26,11 @@ namespace Radarr.Api.V3.Movies private readonly IConfigService _configService; public MovieLookupController(ISearchForNewMovie searchProxy, - IProvideMovieInfo movieInfo, - IBuildFileNames fileNameBuilder, - INamingConfigService namingService, - IMapCoversToLocal coverMapper, - IConfigService configService) + IProvideMovieInfo movieInfo, + IBuildFileNames fileNameBuilder, + INamingConfigService namingService, + IMapCoversToLocal coverMapper, + IConfigService configService) { _movieInfo = movieInfo; _searchProxy = searchProxy; @@ -49,7 +51,9 @@ namespace Radarr.Api.V3.Movies { var availDelay = _configService.AvailabilityDelay; var result = new Movie { MovieMetadata = _movieInfo.GetMovieInfo(tmdbId).Item1 }; - var translation = result.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == (Language)_configService.MovieInfoLanguage); + var translation = + result.MovieMetadata.Value.Translations.FirstOrDefault(t => + t.Language == (Language)_configService.MovieInfoLanguage); return result.ToResource(availDelay, translation); } @@ -59,7 +63,9 @@ namespace Radarr.Api.V3.Movies var result = new Movie { MovieMetadata = _movieInfo.GetMovieByImdbId(imdbId) }; var availDelay = _configService.AvailabilityDelay; - var translation = result.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == (Language)_configService.MovieInfoLanguage); + var translation = + result.MovieMetadata.Value.Translations.FirstOrDefault(t => + t.Language == (Language)_configService.MovieInfoLanguage); return result.ToResource(availDelay, translation); } @@ -67,10 +73,30 @@ namespace Radarr.Api.V3.Movies public object Search([FromQuery] string term) { var searchResults = _searchProxy.SearchForNewMovie(term); - + searchResults = PopulateFromImdbIfEmpty(searchResults, term); return MapToResource(searchResults); } + private List PopulateFromImdbIfEmpty(List searchResults, string imdbid) + { + var regex = new Regex(@"^tt\d{7,8}$"); + if (searchResults.Count == 0 && imdbid.StartsWith("tt") && regex.IsMatch(imdbid)) + { + try + { + var movieLookup = _searchProxy.GetMovieByImdbId(imdbid); + var movies = new List { new Movie { MovieMetadata = movieLookup } }; + return movies; + } + catch (MovieNotFoundException) + { + return new List(); + } + } + + return new List(); + } + private IEnumerable MapToResource(IEnumerable movies) { var movieInfoLanguage = (Language)_configService.MovieInfoLanguage; @@ -79,12 +105,14 @@ namespace Radarr.Api.V3.Movies foreach (var currentMovie in movies) { - var translation = currentMovie.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == movieInfoLanguage); + var translation = + currentMovie.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == movieInfoLanguage); var resource = currentMovie.ToResource(availDelay, translation); _coverMapper.ConvertToLocalUrls(resource.Id, resource.Images); - var poster = currentMovie.MovieMetadata.Value.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster); + var poster = + currentMovie.MovieMetadata.Value.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster); if (poster != null) { resource.RemotePoster = poster.RemoteUrl; From 62eac3e956d935e64ad8a0c7dbc90bc12d07e48c Mon Sep 17 00:00:00 2001 From: edwinbernadus Date: Fri, 1 Mar 2024 14:20:42 +0700 Subject: [PATCH 4/6] Revert "move logic to controller" This reverts commit a1816c6ae9eaf5d2e8df30bd672f8a175cde6986. --- .../MetadataSource/ISearchForNewMovie.cs | 2 - .../Movies/MovieLookupController.cs | 48 ++++--------------- 2 files changed, 10 insertions(+), 40 deletions(-) diff --git a/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs b/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs index f0b8d59ad..2907fc117 100644 --- a/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs +++ b/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs @@ -8,7 +8,5 @@ namespace NzbDrone.Core.MetadataSource List SearchForNewMovie(string title); MovieMetadata MapMovieToTmdbMovie(MovieMetadata movie); - - MovieMetadata GetMovieByImdbId(string imdbId); } } diff --git a/src/Radarr.Api.V3/Movies/MovieLookupController.cs b/src/Radarr.Api.V3/Movies/MovieLookupController.cs index 7dd3f2d6b..8a8c82498 100644 --- a/src/Radarr.Api.V3/Movies/MovieLookupController.cs +++ b/src/Radarr.Api.V3/Movies/MovieLookupController.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text.RegularExpressions; using Microsoft.AspNetCore.Mvc; using NzbDrone.Core.Configuration; -using NzbDrone.Core.Exceptions; using NzbDrone.Core.Languages; using NzbDrone.Core.MediaCover; using NzbDrone.Core.MetadataSource; @@ -26,11 +24,11 @@ namespace Radarr.Api.V3.Movies private readonly IConfigService _configService; public MovieLookupController(ISearchForNewMovie searchProxy, - IProvideMovieInfo movieInfo, - IBuildFileNames fileNameBuilder, - INamingConfigService namingService, - IMapCoversToLocal coverMapper, - IConfigService configService) + IProvideMovieInfo movieInfo, + IBuildFileNames fileNameBuilder, + INamingConfigService namingService, + IMapCoversToLocal coverMapper, + IConfigService configService) { _movieInfo = movieInfo; _searchProxy = searchProxy; @@ -51,9 +49,7 @@ namespace Radarr.Api.V3.Movies { var availDelay = _configService.AvailabilityDelay; var result = new Movie { MovieMetadata = _movieInfo.GetMovieInfo(tmdbId).Item1 }; - var translation = - result.MovieMetadata.Value.Translations.FirstOrDefault(t => - t.Language == (Language)_configService.MovieInfoLanguage); + var translation = result.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == (Language)_configService.MovieInfoLanguage); return result.ToResource(availDelay, translation); } @@ -63,9 +59,7 @@ namespace Radarr.Api.V3.Movies var result = new Movie { MovieMetadata = _movieInfo.GetMovieByImdbId(imdbId) }; var availDelay = _configService.AvailabilityDelay; - var translation = - result.MovieMetadata.Value.Translations.FirstOrDefault(t => - t.Language == (Language)_configService.MovieInfoLanguage); + var translation = result.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == (Language)_configService.MovieInfoLanguage); return result.ToResource(availDelay, translation); } @@ -73,28 +67,8 @@ namespace Radarr.Api.V3.Movies public object Search([FromQuery] string term) { var searchResults = _searchProxy.SearchForNewMovie(term); - searchResults = PopulateFromImdbIfEmpty(searchResults, term); - return MapToResource(searchResults); - } - private List PopulateFromImdbIfEmpty(List searchResults, string imdbid) - { - var regex = new Regex(@"^tt\d{7,8}$"); - if (searchResults.Count == 0 && imdbid.StartsWith("tt") && regex.IsMatch(imdbid)) - { - try - { - var movieLookup = _searchProxy.GetMovieByImdbId(imdbid); - var movies = new List { new Movie { MovieMetadata = movieLookup } }; - return movies; - } - catch (MovieNotFoundException) - { - return new List(); - } - } - - return new List(); + return MapToResource(searchResults); } private IEnumerable MapToResource(IEnumerable movies) @@ -105,14 +79,12 @@ namespace Radarr.Api.V3.Movies foreach (var currentMovie in movies) { - var translation = - currentMovie.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == movieInfoLanguage); + var translation = currentMovie.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == movieInfoLanguage); var resource = currentMovie.ToResource(availDelay, translation); _coverMapper.ConvertToLocalUrls(resource.Id, resource.Images); - var poster = - currentMovie.MovieMetadata.Value.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster); + var poster = currentMovie.MovieMetadata.Value.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster); if (poster != null) { resource.RemotePoster = poster.RemoteUrl; From eb5ff0854f236e61e0b2f1f0f2b218ddbf752af4 Mon Sep 17 00:00:00 2001 From: edwinbernadus Date: Fri, 1 Mar 2024 14:21:12 +0700 Subject: [PATCH 5/6] PopulateFromImdbIfEmpty --- .../MetadataSource/ISearchForNewMovie.cs | 2 ++ .../Movies/MovieLookupController.cs | 24 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs b/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs index 2907fc117..f0b8d59ad 100644 --- a/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs +++ b/src/NzbDrone.Core/MetadataSource/ISearchForNewMovie.cs @@ -8,5 +8,7 @@ namespace NzbDrone.Core.MetadataSource List SearchForNewMovie(string title); MovieMetadata MapMovieToTmdbMovie(MovieMetadata movie); + + MovieMetadata GetMovieByImdbId(string imdbId); } } diff --git a/src/Radarr.Api.V3/Movies/MovieLookupController.cs b/src/Radarr.Api.V3/Movies/MovieLookupController.cs index 8a8c82498..d837c704a 100644 --- a/src/Radarr.Api.V3/Movies/MovieLookupController.cs +++ b/src/Radarr.Api.V3/Movies/MovieLookupController.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.RegularExpressions; using Microsoft.AspNetCore.Mvc; using NzbDrone.Core.Configuration; +using NzbDrone.Core.Exceptions; using NzbDrone.Core.Languages; using NzbDrone.Core.MediaCover; using NzbDrone.Core.MetadataSource; @@ -67,10 +69,30 @@ namespace Radarr.Api.V3.Movies public object Search([FromQuery] string term) { var searchResults = _searchProxy.SearchForNewMovie(term); - + searchResults = PopulateFromImdbIfEmpty(searchResults, term); return MapToResource(searchResults); } + private List PopulateFromImdbIfEmpty(List searchResults, string imdbid) + { + var regex = new Regex(@"^tt\d{7,8}$"); + if (searchResults.Count == 0 && imdbid.StartsWith("tt") && regex.IsMatch(imdbid)) + { + try + { + var movieLookup = _searchProxy.GetMovieByImdbId(imdbid); + var movies = new List { new Movie { MovieMetadata = movieLookup } }; + return movies; + } + catch (MovieNotFoundException) + { + return new List(); + } + } + + return new List(); + } + private IEnumerable MapToResource(IEnumerable movies) { var movieInfoLanguage = (Language)_configService.MovieInfoLanguage; From 45a42ad7a0929b23a4f45e01b547560581fad40b Mon Sep 17 00:00:00 2001 From: edwinbernadus Date: Sat, 2 Mar 2024 18:30:27 +0700 Subject: [PATCH 6/6] fix logic on PopulateFromImdbIfEmpty --- src/Radarr.Api.V3/Movies/MovieLookupController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Radarr.Api.V3/Movies/MovieLookupController.cs b/src/Radarr.Api.V3/Movies/MovieLookupController.cs index d837c704a..3ff433dfa 100644 --- a/src/Radarr.Api.V3/Movies/MovieLookupController.cs +++ b/src/Radarr.Api.V3/Movies/MovieLookupController.cs @@ -90,7 +90,7 @@ namespace Radarr.Api.V3.Movies } } - return new List(); + return searchResults; } private IEnumerable MapToResource(IEnumerable movies)