mirror of
https://github.com/Radarr/Radarr
synced 2026-04-01 02:02:03 +02:00
New: Show Custom Format score in Manual Import
(cherry picked from commit 972e1408993fc4656196087c6646f23d222e41f5) Closes #8839
This commit is contained in:
parent
ffde07e4d6
commit
36338310df
7 changed files with 26 additions and 4 deletions
|
|
@ -25,6 +25,7 @@ import {
|
|||
import { SelectStateInputProps } from 'typings/props';
|
||||
import Rejection from 'typings/Rejection';
|
||||
import formatBytes from 'Utilities/Number/formatBytes';
|
||||
import formatCustomFormatScore from 'Utilities/Number/formatCustomFormatScore';
|
||||
import translate from 'Utilities/String/translate';
|
||||
import InteractiveImportRowCellPlaceholder from './InteractiveImportRowCellPlaceholder';
|
||||
import styles from './InteractiveImportRow.css';
|
||||
|
|
@ -45,6 +46,7 @@ interface InteractiveImportRowProps {
|
|||
languages?: Language[];
|
||||
size: number;
|
||||
customFormats?: object[];
|
||||
customFormatScore?: number;
|
||||
rejections: Rejection[];
|
||||
columns: Column[];
|
||||
movieFileId?: number;
|
||||
|
|
@ -66,6 +68,7 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
|
|||
releaseGroup,
|
||||
size,
|
||||
customFormats,
|
||||
customFormatScore,
|
||||
rejections,
|
||||
isSelected,
|
||||
modalTitle,
|
||||
|
|
@ -293,8 +296,11 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
|
|||
<TableRowCell>
|
||||
{customFormats?.length ? (
|
||||
<Popover
|
||||
anchor={<Icon name={icons.INTERACTIVE} />}
|
||||
title={translate('Formats')}
|
||||
anchor={formatCustomFormatScore(
|
||||
customFormatScore,
|
||||
customFormats.length
|
||||
)}
|
||||
title={translate('CustomFormats')}
|
||||
body={
|
||||
<div className={styles.customFormatTooltip}>
|
||||
<MovieFormats formats={customFormats} />
|
||||
|
|
|
|||
|
|
@ -47,6 +47,10 @@ export const defaultState = {
|
|||
|
||||
quality: function(item, direction) {
|
||||
return item.qualityWeight || 0;
|
||||
},
|
||||
|
||||
customFormats: function(item, direction) {
|
||||
return item.customFormatScore;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ public class ManualImportItem
|
|||
public string ReleaseGroup { get; set; }
|
||||
public string DownloadId { get; set; }
|
||||
public List<CustomFormat> CustomFormats { get; set; }
|
||||
public int CustomFormatScore { get; set; }
|
||||
public IEnumerable<Rejection> Rejections { get; set; }
|
||||
public Movie Movie { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -312,6 +312,7 @@ private ManualImportItem MapItem(ImportDecision decision, string rootFolder, str
|
|||
item.Movie = decision.LocalMovie.Movie;
|
||||
|
||||
item.CustomFormats = _formatCalculator.ParseCustomFormat(decision.LocalMovie);
|
||||
item.CustomFormatScore = item.Movie.Profile?.CalculateCustomFormatScore(item.CustomFormats) ?? 0;
|
||||
}
|
||||
|
||||
item.Quality = decision.LocalMovie.Quality;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
using NzbDrone.Core.Languages;
|
||||
using NzbDrone.Core.MediaFiles.MovieImport.Manual;
|
||||
using NzbDrone.Core.Qualities;
|
||||
using Radarr.Api.V3.CustomFormats;
|
||||
using Radarr.Api.V3.Movies;
|
||||
using Radarr.Http;
|
||||
|
||||
|
|
@ -35,6 +36,8 @@ public object ReprocessItems([FromBody] List<ManualImportReprocessResource> item
|
|||
|
||||
item.Movie = processedItem.Movie.ToResource(0);
|
||||
item.Rejections = processedItem.Rejections;
|
||||
item.CustomFormats = processedItem.CustomFormats.ToResource(false);
|
||||
item.CustomFormatScore = processedItem.CustomFormatScore;
|
||||
|
||||
if (item.Languages?.Count <= 1 && (item.Languages?.SingleOrDefault() ?? Language.Unknown) == Language.Unknown &&
|
||||
processedItem.Languages.Any())
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
using NzbDrone.Core.DecisionEngine;
|
||||
using NzbDrone.Core.Languages;
|
||||
using NzbDrone.Core.Qualities;
|
||||
using Radarr.Api.V3.CustomFormats;
|
||||
using Radarr.Api.V3.Movies;
|
||||
using Radarr.Http.REST;
|
||||
|
||||
|
|
@ -16,7 +17,8 @@ public class ManualImportReprocessResource : RestResource
|
|||
public List<Language> Languages { get; set; }
|
||||
public string ReleaseGroup { get; set; }
|
||||
public string DownloadId { get; set; }
|
||||
|
||||
public List<CustomFormatResource> CustomFormats { get; set; }
|
||||
public int CustomFormatScore { get; set; }
|
||||
public IEnumerable<Rejection> Rejections { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ public class ManualImportResource : RestResource
|
|||
public int QualityWeight { get; set; }
|
||||
public string DownloadId { get; set; }
|
||||
public List<CustomFormatResource> CustomFormats { get; set; }
|
||||
public int CustomFormatScore { get; set; }
|
||||
public IEnumerable<Rejection> Rejections { get; set; }
|
||||
}
|
||||
|
||||
|
|
@ -37,6 +38,9 @@ public static ManualImportResource ToResource(this ManualImportItem model)
|
|||
return null;
|
||||
}
|
||||
|
||||
var customFormats = model.CustomFormats;
|
||||
var customFormatScore = model.Movie?.Profile?.CalculateCustomFormatScore(customFormats) ?? 0;
|
||||
|
||||
return new ManualImportResource
|
||||
{
|
||||
Id = HashConverter.GetHashInt31(model.Path),
|
||||
|
|
@ -49,7 +53,8 @@ public static ManualImportResource ToResource(this ManualImportItem model)
|
|||
ReleaseGroup = model.ReleaseGroup,
|
||||
Quality = model.Quality,
|
||||
Languages = model.Languages,
|
||||
CustomFormats = model.CustomFormats.ToResource(false),
|
||||
CustomFormats = customFormats.ToResource(false),
|
||||
CustomFormatScore = customFormatScore,
|
||||
|
||||
// QualityWeight
|
||||
DownloadId = model.DownloadId,
|
||||
|
|
|
|||
Loading…
Reference in a new issue