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..3ff433dfa 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 searchResults; + } + private IEnumerable MapToResource(IEnumerable movies) { var movieInfoLanguage = (Language)_configService.MovieInfoLanguage;