diff --git a/src/Radarr.Api.V3/Movies/MovieLookupController.cs b/src/Radarr.Api.V3/Movies/MovieLookupController.cs index 079b9ecf5..bc8516c95 100644 --- a/src/Radarr.Api.V3/Movies/MovieLookupController.cs +++ b/src/Radarr.Api.V3/Movies/MovieLookupController.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.RegularExpressions; using Microsoft.AspNetCore.Mvc; using NzbDrone.Core.Configuration; using NzbDrone.Core.Languages; @@ -23,6 +24,11 @@ public class MovieLookupController : RestController private readonly IMapCoversToLocal _coverMapper; private readonly IConfigService _configService; + private static readonly Regex ImdbIdRegex = new Regex(@"imdb\.com/title/(?tt\d+)", + RegexOptions.Compiled); + private static readonly Regex TmdbIdRegex = new Regex(@"themoviedb\.org/movie/(?\d+)", + RegexOptions.Compiled); + public MovieLookupController(ISearchForNewMovie searchProxy, IProvideMovieInfo movieInfo, IBuildFileNames fileNameBuilder, @@ -71,11 +77,29 @@ public object SearchByImdbId(string imdbId) [HttpGet] public object Search([FromQuery] string term) { - var searchResults = _searchProxy.SearchForNewMovie(term); + var convertedTerm = ConvertDbLinkToId(term); + var searchResults = _searchProxy.SearchForNewMovie(convertedTerm); return MapToResource(searchResults); } + private string ConvertDbLinkToId(string title) + { + var match = ImdbIdRegex.Match(title); + if (match.Success) + { + return "imdb:" + match.Groups["id"].Value; + } + + match = TmdbIdRegex.Match(title); + if (match.Success) + { + return "tmdb:" + match.Groups["id"].Value; + } + + return title; + } + private IEnumerable MapToResource(IEnumerable movies) { var movieInfoLanguage = (Language)_configService.MovieInfoLanguage;