1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-07-07 04:19:25 +02:00

New: LanguageId filter added to all movie endpoint

This commit is contained in:
Ivan Sanz Carasa 2024-04-24 19:17:17 +02:00 committed by Bogdan
parent 5185e037da
commit 886711b496

View File

@ -110,31 +110,34 @@ public MovieController(IBroadcastSignalRMessage signalRBroadcaster,
} }
[HttpGet] [HttpGet]
public List<MovieResource> AllMovie(int? tmdbId, bool excludeLocalCovers = false) public List<MovieResource> AllMovie(int? tmdbId, bool excludeLocalCovers = false, int? languageId = null)
{ {
var moviesResources = new List<MovieResource>(); var moviesResources = new List<MovieResource>();
Dictionary<string, FileInfo> coverFileInfos = null; Dictionary<string, FileInfo> coverFileInfos = null;
var translationLanguage = languageId is > 0
? Language.All.Single(l => l.Id == languageId.Value)
: (Language)_configService.MovieInfoLanguage;
if (tmdbId.HasValue) if (tmdbId.HasValue)
{ {
var movie = _moviesService.FindByTmdbId(tmdbId.Value); var movie = _moviesService.FindByTmdbId(tmdbId.Value);
if (movie != null) if (movie != null)
{ {
moviesResources.AddIfNotNull(MapToResource(movie)); moviesResources.AddIfNotNull(MapToResource(movie, translationLanguage));
} }
} }
else else
{ {
var movieStats = _movieStatisticsService.MovieStatistics(); var movieStats = _movieStatisticsService.MovieStatistics();
var configLanguage = (Language)_configService.MovieInfoLanguage;
var availDelay = _configService.AvailabilityDelay; var availDelay = _configService.AvailabilityDelay;
var movieTask = Task.Run(() => _moviesService.GetAllMovies()); var movieTask = Task.Run(() => _moviesService.GetAllMovies());
var translations = _movieTranslationService var translations = _movieTranslationService
.GetAllTranslationsForLanguage(configLanguage); .GetAllTranslationsForLanguage(translationLanguage);
var tdict = translations.ToDictionary(x => x.MovieMetadataId); var tdict = translations.ToDictionary(x => x.MovieMetadataId);
var sdict = movieStats.ToDictionary(x => x.MovieId); var sdict = movieStats.ToDictionary(x => x.MovieId);
@ -150,7 +153,7 @@ public List<MovieResource> AllMovie(int? tmdbId, bool excludeLocalCovers = false
foreach (var movie in movies) foreach (var movie in movies)
{ {
var translation = GetTranslationFromDict(tdict, movie.MovieMetadata, configLanguage); var translation = GetTranslationFromDict(tdict, movie.MovieMetadata, translationLanguage);
moviesResources.Add(movie.ToResource(availDelay, translation, _qualityUpgradableSpecification)); moviesResources.Add(movie.ToResource(availDelay, translation, _qualityUpgradableSpecification));
} }
@ -176,17 +179,18 @@ protected override MovieResource GetResourceById(int id)
return MapToResource(movie); return MapToResource(movie);
} }
protected MovieResource MapToResource(Movie movie) protected MovieResource MapToResource(Movie movie, Language translationLanguage = null)
{ {
if (movie == null) if (movie == null)
{ {
return null; return null;
} }
translationLanguage ??= (Language)_configService.MovieInfoLanguage;
var availDelay = _configService.AvailabilityDelay; var availDelay = _configService.AvailabilityDelay;
var translations = _movieTranslationService.GetAllTranslationsForMovieMetadata(movie.MovieMetadataId); var translations = _movieTranslationService.GetAllTranslationsForMovieMetadata(movie.MovieMetadataId);
var translation = GetMovieTranslation(translations, movie.MovieMetadata, (Language)_configService.MovieInfoLanguage); var translation = GetMovieTranslation(translations, movie.MovieMetadata, translationLanguage);
var resource = movie.ToResource(availDelay, translation, _qualityUpgradableSpecification); var resource = movie.ToResource(availDelay, translation, _qualityUpgradableSpecification);
MapCoversToLocal(resource); MapCoversToLocal(resource);