diff --git a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs index 4ac7d7fcd7..c13b753ff6 100644 --- a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs +++ b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs @@ -67,7 +67,8 @@ public class LanguageFixture : CoreTest new object[] { 52, Language.Marathi }, new object[] { 53, Language.Tagalog }, new object[] { 54, Language.Urdu }, - new object[] { 55, Language.Romansh } + new object[] { 55, Language.Romansh }, + new object[] { 56, Language.Mongolian } }; public static object[] ToIntCases = @@ -129,7 +130,8 @@ public class LanguageFixture : CoreTest new object[] { Language.Marathi, 52 }, new object[] { Language.Tagalog, 53 }, new object[] { Language.Urdu, 54 }, - new object[] { Language.Romansh, 55 } + new object[] { Language.Romansh, 55 }, + new object[] { Language.Mongolian, 56 } }; [Test] diff --git a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/FileNameBuilderFixture.cs b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/FileNameBuilderFixture.cs index 237733636a..09039b48e3 100644 --- a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/FileNameBuilderFixture.cs +++ b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/FileNameBuilderFixture.cs @@ -405,6 +405,8 @@ public void should_format_mediainfo_properly() [TestCase("ice", "IS")] [TestCase("dut", "NL")] [TestCase("nor", "NO")] + [TestCase("khk", "MN")] + [TestCase("mvf", "MN")] 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 bba285573b..83b92c7e21 100644 --- a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs @@ -98,5 +98,16 @@ public void should_return_romansh(string isoCode) var result = IsoLanguages.Find(isoCode); result.Language.Should().Be(Language.Romansh); } + + [TestCase("mn")] + [TestCase("mon")] + [TestCase("khk")] + [TestCase("mvf")] + [TestCase("mn-Cyrl")] + public void should_return_mongolian(string isoCode) + { + var result = IsoLanguages.Find(isoCode); + result.Language.Should().Be(Language.Mongolian); + } } } diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index c8aaab6b4a..77a1fcfe5f 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -513,6 +513,14 @@ public void should_parse_language_romansh(string postTitle) result.Should().Contain(Language.Romansh); } + [TestCase("Movie.Title.2025.Mongolian.WEB-DL.h264")] + [TestCase("Movie.Title.2025.Khalkha.WEB-DL.h264")] + public void should_parse_language_mongolian(string postTitle) + { + var result = LanguageParser.ParseLanguages(postTitle); + result.Should().Contain(Language.Mongolian); + } + [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 3c4e2e5d55..46753fb4ef 100644 --- a/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs +++ b/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs @@ -73,6 +73,8 @@ public enum TMDbLanguageCodes [FieldOption(Hint = "Urdu")] ur, [FieldOption(Hint = "Raeto-Romance")] - rm + rm, + [FieldOption(Hint = "Mongolian")] + mn } } diff --git a/src/NzbDrone.Core/Languages/Language.cs b/src/NzbDrone.Core/Languages/Language.cs index b778758f8a..29cf1d23ad 100644 --- a/src/NzbDrone.Core/Languages/Language.cs +++ b/src/NzbDrone.Core/Languages/Language.cs @@ -126,6 +126,7 @@ public override bool Equals(object obj) public static Language Tagalog => new Language(53, "Tagalog"); 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 Any => new Language(-1, "Any"); public static Language Original => new Language(-2, "Original"); @@ -191,6 +192,7 @@ public static List All Tagalog, Urdu, Romansh, + Mongolian, Any, Original }; diff --git a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs index 1963705330..6683b3d595 100644 --- a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs +++ b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs @@ -79,7 +79,9 @@ public class FileNameBuilder : IBuildFileNames { "rum", "ron" }, { "slo", "slk" }, { "tib", "bod" }, - { "wel", "cym" } + { "wel", "cym" }, + { "khk", "mon" }, + { "mvf", "mon" } }.ToImmutableDictionary(); public static readonly ImmutableArray BadCharacters = ImmutableArray.Create("\\", "/", "<", ">", "?", "*", "|", "\""); diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index aa0eaabfeb..bc1d13648d 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -64,7 +64,8 @@ public static class IsoLanguages new IsoLanguage("mr", "", "mar", "Marathi", Language.Marathi), new IsoLanguage("tl", "", "tgl", "Tagalog", Language.Tagalog), new IsoLanguage("ur", "", "urd", "Urdu", Language.Urdu), - new IsoLanguage("rm", "", "roh", "Romansh", Language.Romansh) + new IsoLanguage("rm", "", "roh", "Romansh", Language.Romansh), + new IsoLanguage("mn", "", "mon", "Mongolian", Language.Mongolian) }; private static readonly Dictionary AlternateIsoCodeMappings = new () diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index af6b5f284b..3b7fb4457a 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -39,6 +39,7 @@ public static class LanguageParser (?\bKOR\b)| (?\burdu\b)| (?\b(?:romansh|rumantsch|romansch)\b)| + (?\b(?:mongolian|khalkha)\b)| (?\b(?:orig|original)\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); @@ -432,6 +433,11 @@ public static List ParseLanguages(string title) languages.Add(Language.Romansh); } + if (match.Groups["mongolian"].Success) + { + languages.Add(Language.Mongolian); + } + if (match.Groups["original"].Success) { languages.Add(Language.Original);