1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-10-05 15:47:20 +02:00

Include indexer flags to show the correct custom formats in movie file history

This commit is contained in:
Bogdan 2023-09-06 11:56:28 +03:00
parent 58e0b19d06
commit 1865257544
5 changed files with 36 additions and 31 deletions

View File

@ -269,17 +269,19 @@ export const actionHandlers = handleThunks({
promise.done((data) => { promise.done((data) => {
dispatch(batchActions([ dispatch(batchActions([
...movieFileIds.map((id) => { ...movieFileIds.map((id) => {
const props = {};
const movieFile = data.find((file) => file.id === id); const movieFile = data.find((file) => file.id === id);
props.qualityCutoffNotMet = movieFile.qualityCutoffNotMet; const props = {
customFormats: movieFile.customFormats,
customFormatScore: movieFile.customFormatScore,
qualityCutoffNotMet: movieFile.qualityCutoffNotMet
};
if (languages) { if (languages) {
props.languages = languages; props.languages = languages;
} }
if (indexerFlags) { if (indexerFlags !== undefined) {
props.indexerFlags = indexerFlags; props.indexerFlags = indexerFlags;
} }

View File

@ -228,6 +228,7 @@ public void Handle(MovieFileDeletedEvent message)
history.Data.Add("Reason", message.Reason.ToString()); history.Data.Add("Reason", message.Reason.ToString());
history.Data.Add("ReleaseGroup", message.MovieFile.ReleaseGroup); history.Data.Add("ReleaseGroup", message.MovieFile.ReleaseGroup);
history.Data.Add("IndexerFlags", message.MovieFile.IndexerFlags.ToString());
_historyRepository.Insert(history); _historyRepository.Insert(history);
} }
@ -254,6 +255,7 @@ public void Handle(MovieFileRenamedEvent message)
history.Data.Add("Path", path); history.Data.Add("Path", path);
history.Data.Add("RelativePath", relativePath); history.Data.Add("RelativePath", relativePath);
history.Data.Add("ReleaseGroup", message.MovieFile.ReleaseGroup); history.Data.Add("ReleaseGroup", message.MovieFile.ReleaseGroup);
history.Data.Add("IndexerFlags", message.MovieFile.IndexerFlags.ToString());
_historyRepository.Insert(history); _historyRepository.Insert(history);
} }

View File

@ -13,7 +13,6 @@
using NzbDrone.Core.Parser; using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
using NzbDrone.SignalR; using NzbDrone.SignalR;
using Radarr.Api.V3.CustomFormats;
using Radarr.Http; using Radarr.Http;
using Radarr.Http.REST; using Radarr.Http.REST;
using Radarr.Http.REST.Attributes; using Radarr.Http.REST.Attributes;
@ -51,19 +50,14 @@ protected override MovieFileResource GetResourceById(int id)
{ {
var movieFile = _mediaFileService.GetMovie(id); var movieFile = _mediaFileService.GetMovie(id);
var movie = _movieService.GetMovie(movieFile.MovieId); var movie = _movieService.GetMovie(movieFile.MovieId);
movieFile.Movie = movie;
var resource = movieFile.ToResource(movie, _qualityUpgradableSpecification); var resource = movieFile.ToResource(movie, _qualityUpgradableSpecification, _formatCalculator);
var customFormats = _formatCalculator.ParseCustomFormat(movieFile);
var customFormatScore = movie?.QualityProfile?.CalculateCustomFormatScore(customFormats) ?? 0;
resource.CustomFormats = customFormats.ToResource(false);
resource.CustomFormatScore = customFormatScore;
return resource; return resource;
} }
[HttpGet] [HttpGet]
[Produces("application/json")]
public List<MovieFileResource> GetMovieFiles(int? movieId, [FromQuery] List<int> movieFileIds) public List<MovieFileResource> GetMovieFiles(int? movieId, [FromQuery] List<int> movieFileIds)
{ {
if (!movieId.HasValue && !movieFileIds.Any()) if (!movieId.HasValue && !movieFileIds.Any())
@ -81,15 +75,7 @@ public List<MovieFileResource> GetMovieFiles(int? movieId, [FromQuery] List<int>
return new List<MovieFileResource>(); return new List<MovieFileResource>();
} }
var resource = file.ToResource(movie, _qualityUpgradableSpecification); return new List<MovieFileResource> { file.ToResource(movie, _qualityUpgradableSpecification, _formatCalculator) };
file.Movie = movie;
var customFormats = _formatCalculator.ParseCustomFormat(file);
var customFormatScore = movie?.QualityProfile?.CalculateCustomFormatScore(customFormats) ?? 0;
resource.CustomFormats = customFormats.ToResource(false);
resource.CustomFormatScore = customFormatScore;
return new List<MovieFileResource> { resource };
} }
else else
{ {
@ -97,12 +83,13 @@ public List<MovieFileResource> GetMovieFiles(int? movieId, [FromQuery] List<int>
return movieFiles.GroupBy(e => e.MovieId) return movieFiles.GroupBy(e => e.MovieId)
.SelectMany(f => f.ToList() .SelectMany(f => f.ToList()
.ConvertAll(e => e.ToResource(_movieService.GetMovie(f.Key), _qualityUpgradableSpecification))) .ConvertAll(e => e.ToResource(_movieService.GetMovie(f.Key), _qualityUpgradableSpecification, _formatCalculator)))
.ToList(); .ToList();
} }
} }
[RestPutById] [RestPutById]
[Consumes("application/json")]
public ActionResult<MovieFileResource> SetMovieFile(MovieFileResource movieFileResource) public ActionResult<MovieFileResource> SetMovieFile(MovieFileResource movieFileResource)
{ {
var movieFile = _mediaFileService.GetMovie(movieFileResource.Id); var movieFile = _mediaFileService.GetMovie(movieFileResource.Id);
@ -125,6 +112,7 @@ public ActionResult<MovieFileResource> SetMovieFile(MovieFileResource movieFileR
} }
[HttpPut("editor")] [HttpPut("editor")]
[Consumes("application/json")]
public object SetMovieFile([FromBody] MovieFileListResource resource) public object SetMovieFile([FromBody] MovieFileListResource resource)
{ {
var movieFiles = _mediaFileService.GetMovies(resource.MovieFileIds); var movieFiles = _mediaFileService.GetMovies(resource.MovieFileIds);
@ -164,10 +152,8 @@ public object SetMovieFile([FromBody] MovieFileListResource resource)
} }
_mediaFileService.Update(movieFiles); _mediaFileService.Update(movieFiles);
var movie = _movieService.GetMovie(movieFiles.First().MovieId); var movie = _movieService.GetMovie(movieFiles.First().MovieId);
return Accepted(movieFiles.ConvertAll(f => f.ToResource(movie, _qualityUpgradableSpecification, _formatCalculator)));
return Accepted(movieFiles.ConvertAll(f => f.ToResource(movie, _qualityUpgradableSpecification)));
} }
[RestDeleteById] [RestDeleteById]
@ -186,6 +172,7 @@ public void DeleteMovieFile(int id)
} }
[HttpDelete("bulk")] [HttpDelete("bulk")]
[Consumes("application/json")]
public object DeleteMovieFiles([FromBody] MovieFileListResource resource) public object DeleteMovieFiles([FromBody] MovieFileListResource resource)
{ {
var movieFiles = _mediaFileService.GetMovies(resource.MovieFileIds); var movieFiles = _mediaFileService.GetMovies(resource.MovieFileIds);

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using NzbDrone.Core.CustomFormats;
using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Languages; using NzbDrone.Core.Languages;
using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles;
@ -60,14 +61,14 @@ private static MovieFileResource ToResource(this MovieFile model)
}; };
} }
public static MovieFileResource ToResource(this MovieFile model, NzbDrone.Core.Movies.Movie movie, IUpgradableSpecification upgradableSpecification) public static MovieFileResource ToResource(this MovieFile model, NzbDrone.Core.Movies.Movie movie, IUpgradableSpecification upgradableSpecification, ICustomFormatCalculationService formatCalculationService)
{ {
if (model == null) if (model == null)
{ {
return null; return null;
} }
return new MovieFileResource var resource = new MovieFileResource
{ {
Id = model.Id, Id = model.Id,
@ -86,6 +87,18 @@ public static MovieFileResource ToResource(this MovieFile model, NzbDrone.Core.M
QualityCutoffNotMet = upgradableSpecification?.QualityCutoffNotMet(movie.QualityProfile, model.Quality) ?? false, QualityCutoffNotMet = upgradableSpecification?.QualityCutoffNotMet(movie.QualityProfile, model.Quality) ?? false,
OriginalFilePath = model.OriginalFilePath OriginalFilePath = model.OriginalFilePath
}; };
if (formatCalculationService != null)
{
model.Movie = movie;
var customFormats = formatCalculationService?.ParseCustomFormat(model, model.Movie);
var customFormatScore = movie?.QualityProfile?.CalculateCustomFormatScore(customFormats) ?? 0;
resource.CustomFormats = customFormats.ToResource(false);
resource.CustomFormatScore = customFormatScore;
}
return resource;
} }
} }
} }

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Core.CustomFormats;
using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Languages; using NzbDrone.Core.Languages;
using NzbDrone.Core.MediaCover; using NzbDrone.Core.MediaCover;
@ -80,7 +81,7 @@ public MovieResource()
public static class MovieResourceMapper public static class MovieResourceMapper
{ {
public static MovieResource ToResource(this Movie model, int availDelay, MovieTranslation movieTranslation = null, IUpgradableSpecification upgradableSpecification = null) public static MovieResource ToResource(this Movie model, int availDelay, MovieTranslation movieTranslation = null, IUpgradableSpecification upgradableSpecification = null, ICustomFormatCalculationService formatCalculationService = null)
{ {
if (model == null) if (model == null)
{ {
@ -89,7 +90,7 @@ public static MovieResource ToResource(this Movie model, int availDelay, MovieTr
var size = model.MovieFile?.Size ?? 0; var size = model.MovieFile?.Size ?? 0;
var movieFile = model.MovieFile?.ToResource(model, upgradableSpecification); var movieFile = model.MovieFile?.ToResource(model, upgradableSpecification, formatCalculationService);
var translatedTitle = movieTranslation?.Title ?? model.Title; var translatedTitle = movieTranslation?.Title ?? model.Title;
var translatedOverview = movieTranslation?.Overview ?? model.MovieMetadata.Value.Overview; var translatedOverview = movieTranslation?.Overview ?? model.MovieMetadata.Value.Overview;
@ -205,9 +206,9 @@ public static Movie ToModel(this MovieResource resource, Movie movie)
return movie; return movie;
} }
public static List<MovieResource> ToResource(this IEnumerable<Movie> movies, int availDelay, IUpgradableSpecification upgradableSpecification = null) public static List<MovieResource> ToResource(this IEnumerable<Movie> movies, int availDelay, IUpgradableSpecification upgradableSpecification = null, ICustomFormatCalculationService formatCalculationService = null)
{ {
return movies.Select(x => ToResource(x, availDelay, null, upgradableSpecification)).ToList(); return movies.Select(x => ToResource(x, availDelay, null, upgradableSpecification, formatCalculationService)).ToList();
} }
public static List<Movie> ToModel(this IEnumerable<MovieResource> resources) public static List<Movie> ToModel(this IEnumerable<MovieResource> resources)