From fed04725148ae9b28ecf12724399102d1093d85b Mon Sep 17 00:00:00 2001 From: baliasnyifeliks Date: Wed, 4 Feb 2026 14:20:58 +0200 Subject: [PATCH] feat(makhno): support multiple language variants for categories MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add support for Ukrainian, Russian, and English category names in both Makhno and UaTUT controllers. This improves internationalization by recognizing category names in different languages. Supported categories now include: - Series: Серіал, Сериал, Аніме, Аниме, Мультсеріал, Мультсериал, TV - Movies: Фільм, Фильм, Мультфільм, Мультфильм, Movie Refactored filtering logic to use dedicated helper methods for better code maintainability. --- Makhno/Controller.cs | 7 ++++++- UaTUT/Controller.cs | 25 +++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Makhno/Controller.cs b/Makhno/Controller.cs index 3302487..a7ff918 100644 --- a/Makhno/Controller.cs +++ b/Makhno/Controller.cs @@ -344,7 +344,12 @@ namespace Makhno return false; return category.Equals("Серіал", StringComparison.OrdinalIgnoreCase) - || category.Equals("Аніме", StringComparison.OrdinalIgnoreCase); + || category.Equals("Сериал", StringComparison.OrdinalIgnoreCase) + || category.Equals("Аніме", StringComparison.OrdinalIgnoreCase) + || category.Equals("Аниме", StringComparison.OrdinalIgnoreCase) + || category.Equals("Мультсеріал", StringComparison.OrdinalIgnoreCase) + || category.Equals("Мультсериал", StringComparison.OrdinalIgnoreCase) + || category.Equals("TV", StringComparison.OrdinalIgnoreCase); } private bool IsSerialByUrl(string url, int serial) diff --git a/UaTUT/Controller.cs b/UaTUT/Controller.cs index 29dadc3..19f6a11 100644 --- a/UaTUT/Controller.cs +++ b/UaTUT/Controller.cs @@ -66,7 +66,7 @@ namespace UaTUT var init = ModInit.UaTUT; // Фільтруємо тільки серіали та аніме - var seriesResults = searchResults.Where(r => r.Category == "Серіал" || r.Category == "Аніме").ToList(); + var seriesResults = searchResults.Where(r => IsSeriesCategory(r.Category)).ToList(); if (!seriesResults.Any()) { @@ -249,7 +249,7 @@ namespace UaTUT var init = ModInit.UaTUT; // Фільтруємо тільки фільми - var movieResults = searchResults.Where(r => r.Category == "Фільм").ToList(); + var movieResults = searchResults.Where(r => IsMovieCategory(r.Category)).ToList(); if (!movieResults.Any()) { @@ -456,6 +456,27 @@ namespace UaTUT return cleaned; } + private static bool IsMovieCategory(string category) + { + if (string.IsNullOrWhiteSpace(category)) + return false; + + var value = category.Trim().ToLowerInvariant(); + return value == "фільм" || value == "фильм" || value == "мультфільм" || value == "мультфильм" || value == "movie"; + } + + private static bool IsSeriesCategory(string category) + { + if (string.IsNullOrWhiteSpace(category)) + return false; + + var value = category.Trim().ToLowerInvariant(); + return value == "серіал" || value == "сериал" + || value == "аніме" || value == "аниме" + || value == "мультсеріал" || value == "мультсериал" + || value == "tv"; + } + string BuildStreamUrl(OnlinesSettings init, string streamLink) { string link = streamLink?.Trim();