From 5f03093b3869030ce07ba9f7e0b927d7afd51381 Mon Sep 17 00:00:00 2001 From: flb Date: Fri, 9 Feb 2024 18:48:49 +0100 Subject: [PATCH 1/4] search movies with imdb/tmdb links --- .../MetadataSource/SkyHook/SkyHookProxy.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index 49ac659ea..e24aa65aa 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -33,6 +33,11 @@ public class SkyHookProxy : IProvideMovieInfo, ISearchForNewMovie private readonly IMovieMetadataService _movieMetadataService; private readonly IMovieTranslationService _movieTranslationService; + 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 SkyHookProxy(IHttpClient httpClient, IRadarrCloudRequestBuilder requestBuilder, IConfigService configService, @@ -401,12 +406,31 @@ public MovieMetadata MapMovieToTmdbMovie(MovieMetadata movie) } } + private List 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; + } + public List SearchForNewMovie(string title) { try { var lowerTitle = title.ToLower(); + lowerTitle = ConvertDbLinkToId(lowerTitle); + lowerTitle = lowerTitle.Replace(".", ""); var parserTitle = lowerTitle; From 2b1838517c2458118333b3c0e1731f155d46c641 Mon Sep 17 00:00:00 2001 From: flb Date: Fri, 9 Feb 2024 19:20:17 +0100 Subject: [PATCH 2/4] fix 5f03093b3869030ce07ba9f7e0b927d7afd51381, add missing namespace --- src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index e24aa65aa..821f9d420 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Net; +using System.Text.RegularExpressions; using Newtonsoft.Json; using NLog; using NzbDrone.Common.Cloud; From 467ff799fcf6ed77fc05e254410faee6604ef6a1 Mon Sep 17 00:00:00 2001 From: flb Date: Fri, 9 Feb 2024 20:59:00 +0100 Subject: [PATCH 3/4] fix wrong type for ConvertDbLinkToId() --- src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index 821f9d420..892ea00c1 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -407,7 +407,7 @@ public MovieMetadata MapMovieToTmdbMovie(MovieMetadata movie) } } - private List ConvertDbLinkToId(string title) + private string ConvertDbLinkToId(string title) { var match = ImdbIdRegex.Match(title); if (match.Success) From 12f8312eecc0a8e9dc1fd448bacdbc9e8b5d15bb Mon Sep 17 00:00:00 2001 From: flb Date: Mon, 12 Feb 2024 21:08:18 +0100 Subject: [PATCH 4/4] move tmdb/imdb link parsing logic to MovieLookupController.cs --- .../MetadataSource/SkyHook/SkyHookProxy.cs | 25 ------------------ .../Movies/MovieLookupController.cs | 26 ++++++++++++++++++- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index 892ea00c1..49ac659ea 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Net; -using System.Text.RegularExpressions; using Newtonsoft.Json; using NLog; using NzbDrone.Common.Cloud; @@ -34,11 +33,6 @@ public class SkyHookProxy : IProvideMovieInfo, ISearchForNewMovie private readonly IMovieMetadataService _movieMetadataService; private readonly IMovieTranslationService _movieTranslationService; - 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 SkyHookProxy(IHttpClient httpClient, IRadarrCloudRequestBuilder requestBuilder, IConfigService configService, @@ -407,31 +401,12 @@ public MovieMetadata MapMovieToTmdbMovie(MovieMetadata movie) } } - 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; - } - public List SearchForNewMovie(string title) { try { var lowerTitle = title.ToLower(); - lowerTitle = ConvertDbLinkToId(lowerTitle); - lowerTitle = lowerTitle.Replace(".", ""); var parserTitle = lowerTitle; diff --git a/src/Radarr.Api.V3/Movies/MovieLookupController.cs b/src/Radarr.Api.V3/Movies/MovieLookupController.cs index 8a8c82498..ca260604e 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, @@ -66,11 +72,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;