From b6b809f4735fdd79f3dc8b66edaf0ecabbc02613 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 8 Feb 2024 12:10:41 +0200 Subject: [PATCH] Fixed: Reprocessing custom formats for file in Manual Import --- .../InteractiveSearchRow.tsx | 15 ++++++---- .../MovieImport/Manual/ManualImportService.cs | 30 +++++++++---------- src/Radarr.Api.V3/Indexers/ReleaseResource.cs | 6 ++-- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/frontend/src/InteractiveSearch/InteractiveSearchRow.tsx b/frontend/src/InteractiveSearch/InteractiveSearchRow.tsx index 41b009de3..981f69dd5 100644 --- a/frontend/src/InteractiveSearch/InteractiveSearchRow.tsx +++ b/frontend/src/InteractiveSearch/InteractiveSearchRow.tsx @@ -11,7 +11,6 @@ import Tooltip from 'Components/Tooltip/Tooltip'; import type DownloadProtocol from 'DownloadClient/DownloadProtocol'; import { icons, kinds, tooltipPositions } from 'Helpers/Props'; import Language from 'Language/Language'; -import IndexerFlags from 'Movie/IndexerFlags'; import MovieFormats from 'Movie/MovieFormats'; import MovieLanguage from 'Movie/MovieLanguage'; import MovieQuality from 'Movie/MovieQuality'; @@ -91,7 +90,7 @@ interface InteractiveSearchRowProps { customFormats: CustomFormat[]; customFormatScore: number; mappedMovieId?: number; - indexerFlags: number; + indexerFlags: string[]; rejections: string[]; downloadAllowed: boolean; isGrabbing: boolean; @@ -126,7 +125,7 @@ function InteractiveSearchRow(props: InteractiveSearchRowProps) { customFormatScore, customFormats, mappedMovieId, - indexerFlags = 0, + indexerFlags = [], rejections = [], downloadAllowed, isGrabbing = false, @@ -282,11 +281,17 @@ function InteractiveSearchRow(props: InteractiveSearchRowProps) { - {indexerFlags ? ( + {indexerFlags.length ? ( } title={translate('IndexerFlags')} - body={} + body={ +
    + {indexerFlags.map((flag, index) => { + return
  • {flag}
  • ; + })} +
+ } position={tooltipPositions.LEFT} /> ) : null} diff --git a/src/NzbDrone.Core/MediaFiles/MovieImport/Manual/ManualImportService.cs b/src/NzbDrone.Core/MediaFiles/MovieImport/Manual/ManualImportService.cs index 3a257aa8a..047d8264b 100644 --- a/src/NzbDrone.Core/MediaFiles/MovieImport/Manual/ManualImportService.cs +++ b/src/NzbDrone.Core/MediaFiles/MovieImport/Manual/ManualImportService.cs @@ -112,21 +112,21 @@ namespace NzbDrone.Core.MediaFiles.MovieImport.Manual _logger.Debug("Language couldn't be parsed from release, fallback to movie original language: {0}", movie.MovieMetadata.Value.OriginalLanguage.Name); } - var localMovie = new LocalMovie - { - Movie = movie, - FileMovieInfo = Parser.Parser.ParseMoviePath(path), - DownloadClientMovieInfo = downloadClientItem == null ? null : Parser.Parser.ParseMovieTitle(downloadClientItem.Title), - DownloadItem = downloadClientItem, - Path = path, - SceneSource = SceneSource(movie, rootFolder), - ExistingFile = movie.Path.IsParentPath(path), - Size = _diskProvider.GetFileSize(path), - ReleaseGroup = releaseGroup.IsNullOrWhiteSpace() ? Parser.Parser.ParseReleaseGroup(path) : releaseGroup, - Languages = languages?.Count <= 1 && (languages?.SingleOrDefault() ?? Language.Unknown) == Language.Unknown ? languageParse : languages, - Quality = (quality?.Quality ?? Quality.Unknown) == Quality.Unknown ? QualityParser.ParseQuality(path) : quality, - IndexerFlags = (IndexerFlags)indexerFlags - }; + var localMovie = new LocalMovie(); + localMovie.Movie = movie; + localMovie.FileMovieInfo = Parser.Parser.ParseMoviePath(path); + localMovie.DownloadClientMovieInfo = downloadClientItem == null ? null : Parser.Parser.ParseMovieTitle(downloadClientItem.Title); + localMovie.DownloadItem = downloadClientItem; + localMovie.Path = path; + localMovie.SceneSource = SceneSource(movie, rootFolder); + localMovie.ExistingFile = movie.Path.IsParentPath(path); + localMovie.Size = _diskProvider.GetFileSize(path); + localMovie.ReleaseGroup = releaseGroup.IsNullOrWhiteSpace() ? Parser.Parser.ParseReleaseGroup(path) : releaseGroup; + localMovie.Languages = languages?.Count <= 1 && (languages?.SingleOrDefault() ?? Language.Unknown) == Language.Unknown ? languageParse : languages; + localMovie.Quality = (quality?.Quality ?? Quality.Unknown) == Quality.Unknown ? QualityParser.ParseQuality(path) : quality; + localMovie.IndexerFlags = (IndexerFlags)indexerFlags; + localMovie.CustomFormats = _formatCalculator.ParseCustomFormat(localMovie); + localMovie.CustomFormatScore = localMovie.Movie?.QualityProfile?.CalculateCustomFormatScore(localMovie.CustomFormats) ?? 0; return MapItem(_importDecisionMaker.GetDecision(localMovie, downloadClientItem), rootFolder, downloadId, null); } diff --git a/src/Radarr.Api.V3/Indexers/ReleaseResource.cs b/src/Radarr.Api.V3/Indexers/ReleaseResource.cs index fb2807424..c918ac0a9 100644 --- a/src/Radarr.Api.V3/Indexers/ReleaseResource.cs +++ b/src/Radarr.Api.V3/Indexers/ReleaseResource.cs @@ -52,7 +52,7 @@ namespace Radarr.Api.V3.Indexers public int? Seeders { get; set; } public int? Leechers { get; set; } public DownloadProtocol Protocol { get; set; } - public int IndexerFlags { get; set; } + public IEnumerable IndexerFlags { get; set; } // Sent when queuing an unknown release [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] @@ -76,7 +76,7 @@ namespace Radarr.Api.V3.Indexers var parsedMovieInfo = model.RemoteMovie.ParsedMovieInfo; var remoteMovie = model.RemoteMovie; var torrentInfo = (model.RemoteMovie.Release as TorrentInfo) ?? new TorrentInfo(); - var indexerFlags = torrentInfo.IndexerFlags; + var indexerFlags = torrentInfo.IndexerFlags.ToString().Split(new[] { ", " }, StringSplitOptions.None).Where(x => x != "0"); // TODO: Clean this mess up. don't mix data from multiple classes, use sub-resources instead? (Got a huge Deja Vu, didn't we talk about this already once?) return new ReleaseResource @@ -118,7 +118,7 @@ namespace Radarr.Api.V3.Indexers Seeders = torrentInfo.Seeders, Leechers = (torrentInfo.Peers.HasValue && torrentInfo.Seeders.HasValue) ? (torrentInfo.Peers.Value - torrentInfo.Seeders.Value) : (int?)null, Protocol = releaseInfo.DownloadProtocol, - IndexerFlags = (int)indexerFlags + IndexerFlags = indexerFlags }; }