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) => {
dispatch(batchActions([
...movieFileIds.map((id) => {
const props = {};
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) {
props.languages = languages;
}
if (indexerFlags) {
if (indexerFlags !== undefined) {
props.indexerFlags = indexerFlags;
}

View File

@ -228,6 +228,7 @@ namespace NzbDrone.Core.History
history.Data.Add("Reason", message.Reason.ToString());
history.Data.Add("ReleaseGroup", message.MovieFile.ReleaseGroup);
history.Data.Add("IndexerFlags", message.MovieFile.IndexerFlags.ToString());
_historyRepository.Insert(history);
}
@ -254,6 +255,7 @@ namespace NzbDrone.Core.History
history.Data.Add("Path", path);
history.Data.Add("RelativePath", relativePath);
history.Data.Add("ReleaseGroup", message.MovieFile.ReleaseGroup);
history.Data.Add("IndexerFlags", message.MovieFile.IndexerFlags.ToString());
_historyRepository.Insert(history);
}

View File

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

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using NzbDrone.Core.CustomFormats;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Languages;
using NzbDrone.Core.MediaFiles;
@ -60,14 +61,14 @@ namespace Radarr.Api.V3.MovieFiles
};
}
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)
{
return null;
}
return new MovieFileResource
var resource = new MovieFileResource
{
Id = model.Id,
@ -86,6 +87,18 @@ namespace Radarr.Api.V3.MovieFiles
QualityCutoffNotMet = upgradableSpecification?.QualityCutoffNotMet(movie.QualityProfile, model.Quality) ?? false,
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.Collections.Generic;
using System.Linq;
using NzbDrone.Core.CustomFormats;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Languages;
using NzbDrone.Core.MediaCover;
@ -80,7 +81,7 @@ namespace Radarr.Api.V3.Movies
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)
{
@ -89,7 +90,7 @@ namespace Radarr.Api.V3.Movies
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 translatedOverview = movieTranslation?.Overview ?? model.MovieMetadata.Value.Overview;
@ -205,9 +206,9 @@ namespace Radarr.Api.V3.Movies
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)