Fixed: Original Language failures on Custom Format parsing

Fixes #5240
This commit is contained in:
Qstick 2022-11-27 17:26:57 -06:00
parent 3fdc7c8346
commit 89270ad7a1
6 changed files with 22 additions and 21 deletions

View File

@ -74,7 +74,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
.Build(); .Build();
Mocker.GetMock<ICustomFormatCalculationService>() Mocker.GetMock<ICustomFormatCalculationService>()
.Setup(x => x.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>())) .Setup(x => x.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<Series>()))
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
} }
@ -88,7 +88,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
private void GivenQueueFormats(List<CustomFormat> formats) private void GivenQueueFormats(List<CustomFormat> formats)
{ {
Mocker.GetMock<ICustomFormatCalculationService>() Mocker.GetMock<ICustomFormatCalculationService>()
.Setup(x => x.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>())) .Setup(x => x.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<Series>()))
.Returns(formats); .Returns(formats);
} }

View File

@ -272,7 +272,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
Mocker.GetMock<ICustomFormatCalculationService>() Mocker.GetMock<ICustomFormatCalculationService>()
.Setup(s => s.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>())) .Setup(s => s.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<Series>()))
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
_localEpisode.Quality = new QualityModel(Quality.Bluray2160p); _localEpisode.Quality = new QualityModel(Quality.Bluray2160p);
@ -306,7 +306,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
Mocker.GetMock<ICustomFormatCalculationService>() Mocker.GetMock<ICustomFormatCalculationService>()
.Setup(s => s.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>())) .Setup(s => s.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<Series>()))
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
_localEpisode.Quality = new QualityModel(Quality.Bluray1080p); _localEpisode.Quality = new QualityModel(Quality.Bluray1080p);
@ -384,7 +384,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
Mocker.GetMock<ICustomFormatCalculationService>() Mocker.GetMock<ICustomFormatCalculationService>()
.Setup(s => s.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>())) .Setup(s => s.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<Series>()))
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
_localEpisode.Quality = new QualityModel(Quality.Bluray1080p); _localEpisode.Quality = new QualityModel(Quality.Bluray1080p);
@ -417,7 +417,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
Mocker.GetMock<ICustomFormatCalculationService>() Mocker.GetMock<ICustomFormatCalculationService>()
.Setup(s => s.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>())) .Setup(s => s.ParseCustomFormat(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<Series>()))
.Returns(new List<CustomFormat>()); .Returns(new List<CustomFormat>());
_localEpisode.Quality = new QualityModel(Quality.Bluray1080p); _localEpisode.Quality = new QualityModel(Quality.Bluray1080p);

View File

@ -14,8 +14,8 @@ namespace NzbDrone.Core.CustomFormats
{ {
public interface ICustomFormatCalculationService public interface ICustomFormatCalculationService
{ {
List<CustomFormat> ParseCustomFormat(ParsedEpisodeInfo movieInfo); List<CustomFormat> ParseCustomFormat(ParsedEpisodeInfo episodeInfo, Series series);
List<CustomFormat> ParseCustomFormat(EpisodeFile movieFile); List<CustomFormat> ParseCustomFormat(EpisodeFile episodeFile);
List<CustomFormat> ParseCustomFormat(Blocklist blocklist); List<CustomFormat> ParseCustomFormat(Blocklist blocklist);
List<CustomFormat> ParseCustomFormat(EpisodeHistory history); List<CustomFormat> ParseCustomFormat(EpisodeHistory history);
} }
@ -92,24 +92,25 @@ namespace NzbDrone.Core.CustomFormats
return ParseCustomFormat(info, allCustomFormats); return ParseCustomFormat(info, allCustomFormats);
} }
public List<CustomFormat> ParseCustomFormat(ParsedEpisodeInfo movieInfo) public List<CustomFormat> ParseCustomFormat(ParsedEpisodeInfo episodeInfo, Series series)
{ {
return ParseCustomFormat(movieInfo, _formatService.All()); episodeInfo.ExtraInfo["OriginalLanguage"] = series.OriginalLanguage;
return ParseCustomFormat(episodeInfo, _formatService.All());
} }
public List<CustomFormat> ParseCustomFormat(EpisodeFile wpisodeFile) public List<CustomFormat> ParseCustomFormat(EpisodeFile episodeFile)
{ {
return ParseCustomFormat(wpisodeFile, _formatService.All()); return ParseCustomFormat(episodeFile, _formatService.All());
} }
public List<CustomFormat> ParseCustomFormat(Blocklist blocklist) public List<CustomFormat> ParseCustomFormat(Blocklist blocklist)
{ {
var movie = _seriesService.GetSeries(blocklist.SeriesId); var series = _seriesService.GetSeries(blocklist.SeriesId);
var parsed = Parser.Parser.ParseTitle(blocklist.SourceTitle); var parsed = Parser.Parser.ParseTitle(blocklist.SourceTitle);
var info = new ParsedEpisodeInfo var info = new ParsedEpisodeInfo
{ {
SeriesTitle = movie.Title, SeriesTitle = series.Title,
ReleaseTitle = parsed?.ReleaseTitle ?? blocklist.SourceTitle, ReleaseTitle = parsed?.ReleaseTitle ?? blocklist.SourceTitle,
Quality = blocklist.Quality, Quality = blocklist.Quality,
Languages = blocklist.Languages, Languages = blocklist.Languages,
@ -120,19 +121,19 @@ namespace NzbDrone.Core.CustomFormats
} }
}; };
return ParseCustomFormat(info); return ParseCustomFormat(info, series);
} }
public List<CustomFormat> ParseCustomFormat(EpisodeHistory history) public List<CustomFormat> ParseCustomFormat(EpisodeHistory history)
{ {
var movie = _seriesService.GetSeries(history.SeriesId); var series = _seriesService.GetSeries(history.SeriesId);
var parsed = Parser.Parser.ParseTitle(history.SourceTitle); var parsed = Parser.Parser.ParseTitle(history.SourceTitle);
long.TryParse(history.Data.GetValueOrDefault("size"), out var size); long.TryParse(history.Data.GetValueOrDefault("size"), out var size);
var info = new ParsedEpisodeInfo var info = new ParsedEpisodeInfo
{ {
SeriesTitle = movie.Title, SeriesTitle = series.Title,
ReleaseTitle = parsed?.ReleaseTitle ?? history.SourceTitle, ReleaseTitle = parsed?.ReleaseTitle ?? history.SourceTitle,
Quality = history.Quality, Quality = history.Quality,
Languages = history.Languages, Languages = history.Languages,
@ -143,7 +144,7 @@ namespace NzbDrone.Core.CustomFormats
} }
}; };
return ParseCustomFormat(info); return ParseCustomFormat(info, series);
} }
} }
} }

View File

@ -98,7 +98,7 @@ namespace NzbDrone.Core.DecisionEngine
var remoteEpisode = _parsingService.Map(parsedEpisodeInfo, report.TvdbId, report.TvRageId, searchCriteria); var remoteEpisode = _parsingService.Map(parsedEpisodeInfo, report.TvdbId, report.TvRageId, searchCriteria);
remoteEpisode.Release = report; 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; remoteEpisode.CustomFormatScore = remoteEpisode?.Series?.QualityProfile?.Value.CalculateCustomFormatScore(remoteEpisode.CustomFormats) ?? 0;
if (remoteEpisode.Series == null) if (remoteEpisode.Series == null)

View File

@ -52,7 +52,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
continue; 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); _logger.Debug("Checking if existing release in queue meets cutoff. Queued: {0}", remoteEpisode.ParsedEpisodeInfo.Quality);

View File

@ -147,7 +147,7 @@ namespace NzbDrone.Core.Download.TrackedDownloads
// Calculate custom formats // Calculate custom formats
if (trackedDownload.RemoteEpisode != null) 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 // Track it so it can be displayed in the queue even though we can't determine which series it is for