Added: Support for Ukrainian language. (#3594)

This commit is contained in:
Kyrylo Mikos 2019-07-10 11:38:55 +03:00 committed by Leonardo Galli
parent b5e1b83de3
commit dbdda0da13
4 changed files with 10 additions and 1 deletions

View File

@ -26,6 +26,8 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("Castle.2009.S01E14.Mandarin.HDTV.XviD-LOL", Language.Mandarin)] [TestCase("Castle.2009.S01E14.Mandarin.HDTV.XviD-LOL", Language.Mandarin)]
[TestCase("Castle.2009.S01E14.Korean.HDTV.XviD-LOL", Language.Korean)] [TestCase("Castle.2009.S01E14.Korean.HDTV.XviD-LOL", Language.Korean)]
[TestCase("Castle.2009.S01E14.Russian.HDTV.XviD-LOL", Language.Russian)] [TestCase("Castle.2009.S01E14.Russian.HDTV.XviD-LOL", Language.Russian)]
[TestCase("Castle.2009.S01E14.Ukrainian.HDTV.XviD-LOL", Language.Ukrainian)]
[TestCase("Castle.2009.S01E14.Ukr.HDTV.XviD-LOL", Language.Ukrainian)]
[TestCase("Castle.2009.S01E14.Polish.HDTV.XviD-LOL", Language.Polish)] [TestCase("Castle.2009.S01E14.Polish.HDTV.XviD-LOL", Language.Polish)]
[TestCase("Castle.2009.S01E14.Vietnamese.HDTV.XviD-LOL", Language.Vietnamese)] [TestCase("Castle.2009.S01E14.Vietnamese.HDTV.XviD-LOL", Language.Vietnamese)]
[TestCase("Castle.2009.S01E14.Swedish.HDTV.XviD-LOL", Language.Swedish)] [TestCase("Castle.2009.S01E14.Swedish.HDTV.XviD-LOL", Language.Swedish)]

View File

@ -31,6 +31,7 @@ namespace NzbDrone.Core.Parser
new IsoLanguage("hu", "hun", Language.Hungarian), new IsoLanguage("hu", "hun", Language.Hungarian),
new IsoLanguage("he", "heb", Language.Hebrew), new IsoLanguage("he", "heb", Language.Hebrew),
new IsoLanguage("cs", "ces", Language.Czech), new IsoLanguage("cs", "ces", Language.Czech),
new IsoLanguage("ua", "ukr", Language.Ukrainian),
new IsoLanguage("an", "any", Language.Any) new IsoLanguage("an", "any", Language.Any)
}; };

View File

@ -30,6 +30,7 @@ namespace NzbDrone.Core.Parser
Hungarian = 22, Hungarian = 22,
Hebrew = 23, Hebrew = 23,
Czech = 24, Czech = 24,
Ukrainian = 25,
Any = -1, Any = -1,
} }

View File

@ -13,7 +13,7 @@ namespace NzbDrone.Core.Parser
{ {
private static readonly Logger Logger = NzbDroneLogger.GetLogger(typeof(LanguageParser)); private static readonly Logger Logger = NzbDroneLogger.GetLogger(typeof(LanguageParser));
private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_|^)(?<italian>\b(?:ita|italian)\b)|(?<german>german\b|videomann)|(?<flemish>flemish)|(?<greek>greek)|(?<french>(?:\W|_)(?:FR|VOSTFR|VO|VFF|VFQ|VF2|TRUEFRENCH)(?:\W|_))|(?<russian>\brus\b)|(?<dutch>nl\W?subs?)|(?<hungarian>\b(?:HUNDUB|HUN)\b)|(?<hebrew>\bHebDub\b)|(?<czech>\b(?:CZ|SK)\b)", private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_|^)(?<italian>\b(?:ita|italian)\b)|(?<german>german\b|videomann)|(?<flemish>flemish)|(?<greek>greek)|(?<french>(?:\W|_)(?:FR|VOSTFR|VO|VFF|VFQ|VF2|TRUEFRENCH)(?:\W|_))|(?<russian>\brus\b)|(?<dutch>nl\W?subs?)|(?<hungarian>\b(?:HUNDUB|HUN)\b)|(?<hebrew>\bHebDub\b)|(?<czech>\b(?:CZ|SK)\b)|(?<ukrainian>\bukr\b)",
RegexOptions.IgnoreCase | RegexOptions.Compiled); RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static readonly Regex SubtitleLanguageRegex = new Regex(".+?[-_. ](?<iso_code>[a-z]{2,3})(?:[-_. ]forced)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex SubtitleLanguageRegex = new Regex(".+?[-_. ](?<iso_code>[a-z]{2,3})(?:[-_. ]forced)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
@ -86,6 +86,9 @@ namespace NzbDrone.Core.Parser
if (lowerTitle.Contains("czech")) if (lowerTitle.Contains("czech"))
languages.Add( Language.Czech); languages.Add( Language.Czech);
if (lowerTitle.Contains("ukrainian"))
languages.Add(Language.Ukrainian);
var match = LanguageRegex.Match(title); var match = LanguageRegex.Match(title);
if (match.Groups["italian"].Captures.Cast<Capture>().Any()) if (match.Groups["italian"].Captures.Cast<Capture>().Any())
@ -118,6 +121,8 @@ namespace NzbDrone.Core.Parser
if (match.Groups["czech"].Success) if (match.Groups["czech"].Success)
languages.Add( Language.Czech); languages.Add( Language.Czech);
if (match.Groups["ukrainian"].Success)
languages.Add( Language.Ukrainian);
return languages.DistinctBy(l => (int)l).ToList(); return languages.DistinctBy(l => (int)l).ToList();
} }