From 89270ad7a14cc2ff8cc543d6e80154bce94305a7 Mon Sep 17 00:00:00 2001 From: Qstick Date: Sun, 27 Nov 2022 17:26:57 -0600 Subject: [PATCH] Fixed: Original Language failures on Custom Format parsing Fixes #5240 --- .../QueueSpecificationFixture.cs | 4 +-- .../UpgradeSpecificationFixture.cs | 8 +++--- .../CustomFormatCalculationService.cs | 25 ++++++++++--------- .../DecisionEngine/DownloadDecisionMaker.cs | 2 +- .../Specifications/QueueSpecification.cs | 2 +- .../TrackedDownloadService.cs | 2 +- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/QueueSpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/QueueSpecificationFixture.cs index 16dd56be4..1a1e73544 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/QueueSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/QueueSpecificationFixture.cs @@ -74,7 +74,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests .Build(); Mocker.GetMock() - .Setup(x => x.ParseCustomFormat(It.IsAny())) + .Setup(x => x.ParseCustomFormat(It.IsAny(), It.IsAny())) .Returns(new List()); } @@ -88,7 +88,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests private void GivenQueueFormats(List formats) { Mocker.GetMock() - .Setup(x => x.ParseCustomFormat(It.IsAny())) + .Setup(x => x.ParseCustomFormat(It.IsAny(), It.IsAny())) .Returns(formats); } diff --git a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/UpgradeSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/UpgradeSpecificationFixture.cs index 0cb595dd0..0d95f207c 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/UpgradeSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/UpgradeSpecificationFixture.cs @@ -272,7 +272,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications .Returns(new List()); Mocker.GetMock() - .Setup(s => s.ParseCustomFormat(It.IsAny())) + .Setup(s => s.ParseCustomFormat(It.IsAny(), It.IsAny())) .Returns(new List()); _localEpisode.Quality = new QualityModel(Quality.Bluray2160p); @@ -306,7 +306,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications .Returns(new List()); Mocker.GetMock() - .Setup(s => s.ParseCustomFormat(It.IsAny())) + .Setup(s => s.ParseCustomFormat(It.IsAny(), It.IsAny())) .Returns(new List()); _localEpisode.Quality = new QualityModel(Quality.Bluray1080p); @@ -384,7 +384,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications .Returns(new List()); Mocker.GetMock() - .Setup(s => s.ParseCustomFormat(It.IsAny())) + .Setup(s => s.ParseCustomFormat(It.IsAny(), It.IsAny())) .Returns(new List()); _localEpisode.Quality = new QualityModel(Quality.Bluray1080p); @@ -417,7 +417,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications .Returns(new List()); Mocker.GetMock() - .Setup(s => s.ParseCustomFormat(It.IsAny())) + .Setup(s => s.ParseCustomFormat(It.IsAny(), It.IsAny())) .Returns(new List()); _localEpisode.Quality = new QualityModel(Quality.Bluray1080p); diff --git a/src/NzbDrone.Core/CustomFormats/CustomFormatCalculationService.cs b/src/NzbDrone.Core/CustomFormats/CustomFormatCalculationService.cs index b1b6eec29..383a48f6e 100644 --- a/src/NzbDrone.Core/CustomFormats/CustomFormatCalculationService.cs +++ b/src/NzbDrone.Core/CustomFormats/CustomFormatCalculationService.cs @@ -14,8 +14,8 @@ namespace NzbDrone.Core.CustomFormats { public interface ICustomFormatCalculationService { - List ParseCustomFormat(ParsedEpisodeInfo movieInfo); - List ParseCustomFormat(EpisodeFile movieFile); + List ParseCustomFormat(ParsedEpisodeInfo episodeInfo, Series series); + List ParseCustomFormat(EpisodeFile episodeFile); List ParseCustomFormat(Blocklist blocklist); List ParseCustomFormat(EpisodeHistory history); } @@ -92,24 +92,25 @@ namespace NzbDrone.Core.CustomFormats return ParseCustomFormat(info, allCustomFormats); } - public List ParseCustomFormat(ParsedEpisodeInfo movieInfo) + public List ParseCustomFormat(ParsedEpisodeInfo episodeInfo, Series series) { - return ParseCustomFormat(movieInfo, _formatService.All()); + episodeInfo.ExtraInfo["OriginalLanguage"] = series.OriginalLanguage; + return ParseCustomFormat(episodeInfo, _formatService.All()); } - public List ParseCustomFormat(EpisodeFile wpisodeFile) + public List ParseCustomFormat(EpisodeFile episodeFile) { - return ParseCustomFormat(wpisodeFile, _formatService.All()); + return ParseCustomFormat(episodeFile, _formatService.All()); } public List ParseCustomFormat(Blocklist blocklist) { - var movie = _seriesService.GetSeries(blocklist.SeriesId); + var series = _seriesService.GetSeries(blocklist.SeriesId); var parsed = Parser.Parser.ParseTitle(blocklist.SourceTitle); var info = new ParsedEpisodeInfo { - SeriesTitle = movie.Title, + SeriesTitle = series.Title, ReleaseTitle = parsed?.ReleaseTitle ?? blocklist.SourceTitle, Quality = blocklist.Quality, Languages = blocklist.Languages, @@ -120,19 +121,19 @@ namespace NzbDrone.Core.CustomFormats } }; - return ParseCustomFormat(info); + return ParseCustomFormat(info, series); } public List ParseCustomFormat(EpisodeHistory history) { - var movie = _seriesService.GetSeries(history.SeriesId); + var series = _seriesService.GetSeries(history.SeriesId); var parsed = Parser.Parser.ParseTitle(history.SourceTitle); long.TryParse(history.Data.GetValueOrDefault("size"), out var size); var info = new ParsedEpisodeInfo { - SeriesTitle = movie.Title, + SeriesTitle = series.Title, ReleaseTitle = parsed?.ReleaseTitle ?? history.SourceTitle, Quality = history.Quality, Languages = history.Languages, @@ -143,7 +144,7 @@ namespace NzbDrone.Core.CustomFormats } }; - return ParseCustomFormat(info); + return ParseCustomFormat(info, series); } } } diff --git a/src/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs b/src/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs index 6e44bddb1..5707bad98 100644 --- a/src/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs +++ b/src/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs @@ -98,7 +98,7 @@ namespace NzbDrone.Core.DecisionEngine var remoteEpisode = _parsingService.Map(parsedEpisodeInfo, report.TvdbId, report.TvRageId, searchCriteria); remoteEpisode.Release = report; - remoteEpisode.CustomFormats = _formatCalculator.ParseCustomFormat(parsedEpisodeInfo); + remoteEpisode.CustomFormats = _formatCalculator.ParseCustomFormat(parsedEpisodeInfo, remoteEpisode.Series); remoteEpisode.CustomFormatScore = remoteEpisode?.Series?.QualityProfile?.Value.CalculateCustomFormatScore(remoteEpisode.CustomFormats) ?? 0; if (remoteEpisode.Series == null) diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/QueueSpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/QueueSpecification.cs index a8c56e689..4c82e7de6 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/QueueSpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/QueueSpecification.cs @@ -52,7 +52,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications continue; } - var queuedItemCustomFormats = _formatService.ParseCustomFormat(remoteEpisode.ParsedEpisodeInfo); + var queuedItemCustomFormats = _formatService.ParseCustomFormat(remoteEpisode.ParsedEpisodeInfo, subject.Series); _logger.Debug("Checking if existing release in queue meets cutoff. Queued: {0}", remoteEpisode.ParsedEpisodeInfo.Quality); diff --git a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs index d604a7958..8a6da2b46 100644 --- a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs +++ b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs @@ -147,7 +147,7 @@ namespace NzbDrone.Core.Download.TrackedDownloads // Calculate custom formats if (trackedDownload.RemoteEpisode != null) { - trackedDownload.RemoteEpisode.CustomFormats = _formatCalculator.ParseCustomFormat(parsedEpisodeInfo); + trackedDownload.RemoteEpisode.CustomFormats = _formatCalculator.ParseCustomFormat(parsedEpisodeInfo, trackedDownload.RemoteEpisode.Series); } // Track it so it can be displayed in the queue even though we can't determine which series it is for