1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-04 10:34:59 +02:00

New: Parse 480i Bluray/Remux as Bluray 480p

Closes #6801
This commit is contained in:
Mark McDowall 2024-05-09 17:25:49 -07:00 committed by Mark McDowall
parent 9734c2d144
commit 627b2a4289
2 changed files with 35 additions and 1 deletions

View File

@ -109,6 +109,8 @@ public void should_parse_webdl480p_quality(string title, bool proper)
[TestCase("The.Series.S01E05.480p.BluRay.DD5.1.x264-HiSD", false)]
[TestCase("The Series (BD)(640x480(RAW) (BATCH 1) (1-13)", false)]
[TestCase("[Doki] Series - 02 (848x480 XviD BD MP3) [95360783]", false)]
[TestCase("Adventures.of.Sonic.the.Hedgehog.S01.BluRay.480i.DD.2.0.AVC.REMUX-FraMeSToR", false)]
[TestCase("Adventures.of.Sonic.the.Hedgehog.S01E01.Best.Hedgehog.480i.DD.2.0.AVC.REMUX-FraMeSToR", false)]
public void should_parse_bluray480p_quality(string title, bool proper)
{
ParseAndVerifyQuality(title, Quality.Bluray480p, proper);
@ -309,6 +311,7 @@ public void should_parse_webrip2160p_quality(string title, bool proper)
[TestCase("Sans.Series.De.Traces.FRENCH.720p.BluRay.x264-FHD", false)]
[TestCase("Series.Black.1x01.Selezione.Naturale.ITA.720p.BDMux.x264-NovaRip", false)]
[TestCase("Series.Hunter.S02.720p.Blu-ray.Remux.AVC.FLAC.2.0-SiCFoI", false)]
[TestCase("Adventures.of.Sonic.the.Hedgehog.S01E01.Best.Hedgehog.720p.DD.2.0.AVC.REMUX-FraMeSToR", false)]
public void should_parse_bluray720p_quality(string title, bool proper)
{
ParseAndVerifyQuality(title, Quality.Bluray720p, proper);
@ -340,6 +343,7 @@ public void should_parse_bluray1080p_quality(string title, bool proper)
[TestCase("Series.Title.S03E01.The.Calm.1080p.DTS-HD.MA.5.1.AVC.REMUX-FraMeSToR", false)]
[TestCase("Series Title Season 2 (BDRemux 1080p HEVC FLAC) [Netaro]", false)]
[TestCase("[Vodes] Series Title - Other Title (2020) [BDRemux 1080p HEVC Dual-Audio]", false)]
[TestCase("Adventures.of.Sonic.the.Hedgehog.S01E01.Best.Hedgehog.1080p.DD.2.0.AVC.REMUX-FraMeSToR", false)]
public void should_parse_bluray1080p_remux_quality(string title, bool proper)
{
ParseAndVerifyQuality(title, Quality.Bluray1080pRemux, proper);
@ -360,6 +364,7 @@ public void should_parse_bluray2160p_quality(string title, bool proper)
[TestCase("Series.Title.S01E08.The.Sonarr.BluRay.2160p.AVC.DTS-HD.MA.5.1.REMUX-FraMeSToR", false)]
[TestCase("Series.Title.2x11.Nato.Per.The.Sonarr.Bluray.Remux.AVC.2160p.AC3.ITA", false)]
[TestCase("[Dolby Vision] Sonarr.of.Series.S07.MULTi.UHD.BLURAY.REMUX.DV-NoTag", false)]
[TestCase("Adventures.of.Sonic.the.Hedgehog.S01E01.Best.Hedgehog.2160p.DD.2.0.AVC.REMUX-FraMeSToR", false)]
public void should_parse_bluray2160p_remux_quality(string title, bool proper)
{
ParseAndVerifyQuality(title, Quality.Bluray2160pRemux, proper);

View File

@ -46,7 +46,7 @@ public class QualityParser
private static readonly Regex RealRegex = new (@"\b(?<real>REAL)\b",
RegexOptions.Compiled);
private static readonly Regex ResolutionRegex = new (@"\b(?:(?<R360p>360p)|(?<R480p>480p|640x480|848x480)|(?<R540p>540p)|(?<R576p>576p)|(?<R720p>720p|1280x720|960p)|(?<R1080p>1080p|1920x1080|1440p|FHD|1080i|4kto1080p)|(?<R2160p>2160p|3840x2160|4k[-_. ](?:UHD|HEVC|BD|H265)|(?:UHD|HEVC|BD|H265)[-_. ]4k))\b",
private static readonly Regex ResolutionRegex = new (@"\b(?:(?<R360p>360p)|(?<R480p>480p|480i|640x480|848x480)|(?<R540p>540p)|(?<R576p>576p)|(?<R720p>720p|1280x720|960p)|(?<R1080p>1080p|1920x1080|1440p|FHD|1080i|4kto1080p)|(?<R2160p>2160p|3840x2160|4k[-_. ](?:UHD|HEVC|BD|H265)|(?:UHD|HEVC|BD|H265)[-_. ]4k))\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
// Handle cases where no resolution is in the release name (assume if UHD then 4k) or resolution is non-standard
@ -311,6 +311,35 @@ public static QualityModel ParseQualityName(string name)
}
}
if (sourceMatch == null && remuxMatch && resolution != Resolution.Unknown)
{
result.SourceDetectionSource = QualityDetectionSource.Unknown;
if (resolution == Resolution.R480P)
{
result.Quality = Quality.Bluray480p;
return result;
}
if (resolution == Resolution.R720p)
{
result.Quality = Quality.Bluray720p;
return result;
}
if (resolution == Resolution.R2160p)
{
result.Quality = Quality.Bluray2160pRemux;
return result;
}
if (resolution == Resolution.R1080p)
{
result.Quality = Quality.Bluray1080pRemux;
return result;
}
}
// Anime Bluray matching
if (AnimeBlurayRegex.Match(normalizedName).Success)
{