New: Support for multiple movieIds in Rename API endpoint

This commit is contained in:
nuxen 2025-06-16 18:09:19 +02:00 committed by GitHub
parent e6b27512c9
commit 0e2e7e4259
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 7 deletions

View file

@ -17,7 +17,7 @@ namespace NzbDrone.Core.MediaFiles
{ {
public interface IRenameMovieFileService public interface IRenameMovieFileService
{ {
List<RenameMovieFilePreview> GetRenamePreviews(int movieId); List<RenameMovieFilePreview> GetRenamePreviews(List<int> movieIds);
} }
public class RenameMovieFileService : IRenameMovieFileService, public class RenameMovieFileService : IRenameMovieFileService,
@ -49,12 +49,18 @@ public RenameMovieFileService(IMovieService movieService,
_logger = logger; _logger = logger;
} }
public List<RenameMovieFilePreview> GetRenamePreviews(int movieId) public List<RenameMovieFilePreview> GetRenamePreviews(List<int> movieIds)
{ {
var movie = _movieService.GetMovie(movieId); var movies = _movieService.GetMovies(movieIds);
var file = _mediaFileService.GetFilesByMovie(movieId); var movieFiles = _mediaFileService.GetFilesByMovies(movieIds).ToLookup(f => f.MovieId);
return GetPreviews(movie, file).OrderByDescending(m => m.MovieId).ToList(); // TODO: Would really like to not have these be lists return movies.SelectMany(movie =>
{
var files = movieFiles[movie.Id].ToList();
return GetPreviews(movie, files);
})
.ToList();
} }
private IEnumerable<RenameMovieFilePreview> GetPreviews(Movie movie, List<MovieFile> files) private IEnumerable<RenameMovieFilePreview> GetPreviews(Movie movie, List<MovieFile> files)

View file

@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles;
using Radarr.Http; using Radarr.Http;
using Radarr.Http.REST;
namespace Radarr.Api.V3.Movies namespace Radarr.Api.V3.Movies
{ {
@ -16,9 +17,14 @@ public RenameMovieController(IRenameMovieFileService renameMovieFileService)
} }
[HttpGet] [HttpGet]
public List<RenameMovieResource> GetMovies(int movieId) public List<RenameMovieResource> GetMovies([FromQuery(Name = "movieId")] List<int> movieIds)
{ {
return _renameMovieFileService.GetRenamePreviews(movieId).ToResource(); if (movieIds is not { Count: not 0 })
{
throw new BadRequestException("movieId must be provided");
}
return _renameMovieFileService.GetRenamePreviews(movieIds).ToResource();
} }
} }
} }