mirror of https://github.com/Radarr/Radarr
move logic to controller
This commit is contained in:
parent
123d90ccc1
commit
a1816c6ae9
|
@ -8,5 +8,7 @@ namespace NzbDrone.Core.MetadataSource
|
|||
List<Movie> SearchForNewMovie(string title);
|
||||
|
||||
MovieMetadata MapMovieToTmdbMovie(MovieMetadata movie);
|
||||
|
||||
MovieMetadata GetMovieByImdbId(string imdbId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Movie> PopulateFromImdbIfEmpty(List<Movie> 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<Movie> { new Movie { MovieMetadata = movieLookup } };
|
||||
return movies;
|
||||
}
|
||||
catch (MovieNotFoundException)
|
||||
{
|
||||
return new List<Movie>();
|
||||
}
|
||||
}
|
||||
|
||||
return new List<Movie>();
|
||||
}
|
||||
|
||||
private IEnumerable<MovieResource> MapToResource(IEnumerable<Movie> 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;
|
||||
|
|
Loading…
Reference in New Issue