From d38492188a55f98bbada1d9e1acff0dc6281435f Mon Sep 17 00:00:00 2001 From: grapexy <100813784+grapexy@users.noreply.github.com> Date: Mon, 18 Aug 2025 07:11:49 +0400 Subject: [PATCH] New: Georgian language support (#11209) --- src/NzbDrone.Core.Test/Languages/LanguageFixture.cs | 6 ++++-- .../FileNameBuilderTests/FileNameBuilderFixture.cs | 2 ++ .../ParserTests/IsoLanguagesFixture.cs | 10 ++++++++++ .../ParserTests/LanguageParserFixture.cs | 10 ++++++++++ .../ImportLists/TMDb/TMDbLanguageCodes.cs | 4 +++- src/NzbDrone.Core/Languages/Language.cs | 2 ++ src/NzbDrone.Core/Parser/IsoLanguages.cs | 3 ++- src/NzbDrone.Core/Parser/LanguageParser.cs | 6 ++++++ 8 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs index c13b753ff6..87cd1e8474 100644 --- a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs +++ b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs @@ -68,7 +68,8 @@ public class LanguageFixture : CoreTest new object[] { 53, Language.Tagalog }, new object[] { 54, Language.Urdu }, new object[] { 55, Language.Romansh }, - new object[] { 56, Language.Mongolian } + new object[] { 56, Language.Mongolian }, + new object[] { 57, Language.Georgian } }; public static object[] ToIntCases = @@ -131,7 +132,8 @@ public class LanguageFixture : CoreTest new object[] { Language.Tagalog, 53 }, new object[] { Language.Urdu, 54 }, new object[] { Language.Romansh, 55 }, - new object[] { Language.Mongolian, 56 } + new object[] { Language.Mongolian, 56 }, + new object[] { Language.Georgian, 57 } }; [Test] diff --git a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/FileNameBuilderFixture.cs b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/FileNameBuilderFixture.cs index 09039b48e3..7cf7ce4d66 100644 --- a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/FileNameBuilderFixture.cs +++ b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/FileNameBuilderFixture.cs @@ -407,6 +407,8 @@ public void should_format_mediainfo_properly() [TestCase("nor", "NO")] [TestCase("khk", "MN")] [TestCase("mvf", "MN")] + [TestCase("geo", "KA")] + [TestCase("kat", "KA")] public void should_format_languagecodes_properly(string language, string code) { _namingConfig.StandardMovieFormat = "{Movie.Title}.{MEDIAINFO.FULL}"; diff --git a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs index daa6082a1c..0d398a771a 100644 --- a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs @@ -119,5 +119,15 @@ public void should_return_bengali(string isoCode) var result = IsoLanguages.Find(isoCode); result.Language.Should().Be(Language.Bengali); } + + [TestCase("ka")] + [TestCase("geo")] + [TestCase("kat")] + [TestCase("ka-GE")] + public void should_return_georgian(string isoCode) + { + var result = IsoLanguages.Find(isoCode); + result.Language.Should().Be(Language.Georgian); + } } } diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index 77a1fcfe5f..2a534987d5 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -521,6 +521,16 @@ public void should_parse_language_mongolian(string postTitle) result.Should().Contain(Language.Mongolian); } + [TestCase("Movie.Title.1994.Georgian.WEB-DL.h264")] + [TestCase("Movie.Title.2016.Geo.WEB-DL.h264")] + [TestCase("Movie.Title.2016.KA.WEB-DL.h264")] + [TestCase("Movie.Title.2016.RU-KA.WEB-DL.h264")] + public void should_parse_language_georgian(string postTitle) + { + var result = LanguageParser.ParseLanguages(postTitle); + result.Should().Contain(Language.Georgian); + } + [TestCase("Movie.Title.en.sub")] [TestCase("Movie Title.eng.sub")] [TestCase("Movie.Title.eng.forced.sub")] diff --git a/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs b/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs index 46753fb4ef..b4efe27127 100644 --- a/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs +++ b/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs @@ -75,6 +75,8 @@ public enum TMDbLanguageCodes [FieldOption(Hint = "Raeto-Romance")] rm, [FieldOption(Hint = "Mongolian")] - mn + mn, + [FieldOption(Hint = "Georgian")] + ka } } diff --git a/src/NzbDrone.Core/Languages/Language.cs b/src/NzbDrone.Core/Languages/Language.cs index 29cf1d23ad..705351fc2c 100644 --- a/src/NzbDrone.Core/Languages/Language.cs +++ b/src/NzbDrone.Core/Languages/Language.cs @@ -127,6 +127,7 @@ public override bool Equals(object obj) public static Language Urdu => new Language(54, "Urdu"); public static Language Romansh => new Language(55, "Romansh"); public static Language Mongolian => new Language(56, "Mongolian"); + public static Language Georgian => new Language(57, "Georgian"); public static Language Any => new Language(-1, "Any"); public static Language Original => new Language(-2, "Original"); @@ -193,6 +194,7 @@ public static List All Urdu, Romansh, Mongolian, + Georgian, Any, Original }; diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index 7613d9ed40..be75aeb92d 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -65,7 +65,8 @@ public static class IsoLanguages new IsoLanguage("tl", "", "tgl", "Tagalog", Language.Tagalog), new IsoLanguage("ur", "", "urd", "Urdu", Language.Urdu), new IsoLanguage("rm", "", "roh", "Romansh", Language.Romansh), - new IsoLanguage("mn", "", "mon", "Mongolian", Language.Mongolian) + new IsoLanguage("mn", "", "mon", "Mongolian", Language.Mongolian), + new IsoLanguage("ka", "", "kat", "Georgian", Language.Georgian) }; private static readonly Dictionary AlternateIsoCodeMappings = new () diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index 3b7fb4457a..7bace29bb8 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -40,6 +40,7 @@ public static class LanguageParser (?\burdu\b)| (?\b(?:romansh|rumantsch|romansch)\b)| (?\b(?:mongolian|khalkha)\b)| + (?\b(?:georgian|geo|ka|kat)\b)| (?\b(?:orig|original)\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); @@ -438,6 +439,11 @@ public static List ParseLanguages(string title) languages.Add(Language.Mongolian); } + if (match.Groups["georgian"].Success) + { + languages.Add(Language.Georgian); + } + if (match.Groups["original"].Success) { languages.Add(Language.Original);