diff --git a/src/Jackett.Common/Indexers/AnimeBytes.cs b/src/Jackett.Common/Indexers/AnimeBytes.cs index c38e154f7fb10..62eade8da969c 100644 --- a/src/Jackett.Common/Indexers/AnimeBytes.cs +++ b/src/Jackett.Common/Indexers/AnimeBytes.cs @@ -24,7 +24,9 @@ public class AnimeBytes : BaseCachingWebIndexer private string ScrapeUrl => SiteLink + "scrape.php"; public bool AllowRaws => configData.IncludeRaw.Value; public bool PadEpisode => configData.PadEpisode != null && configData.PadEpisode.Value; - public bool AddSynonyms => configData.AddSynonyms.Value; + public bool AddJapaneseTitle => configData.AddJapaneseTitle.Value; + public bool AddRomajiTitle => configData.AddRomajiTitle.Value; + public bool AddAlternativeTitles => configData.AddAlternativeTitles.Value; public bool FilterSeasonEpisode => configData.FilterSeasonEpisode.Value; private new ConfigurationDataAnimeBytes configData @@ -208,10 +210,31 @@ private async Task> GetResults(TorznabQuery query, stri mainTitle = SeriesName; synonyms.Add(mainTitle); - if (AddSynonyms) + + if (group["Synonymns"].HasValues) { - foreach (string synonym in group["Synonymns"]) - synonyms.Add(synonym); + if (group["Synonymns"] is JArray) + { + List allSyonyms = group["Synonymns"].ToObject>(); + + if (AddJapaneseTitle && allSyonyms.Count >= 1) + synonyms.Add(allSyonyms[0]); + if (AddRomajiTitle && allSyonyms.Count >= 2) + synonyms.Add(allSyonyms[1]); + if (AddAlternativeTitles && allSyonyms.Count >= 3) + synonyms.AddRange(allSyonyms[2].Split(',').Select(t => t.Trim())); + } else + { + Dictionary allSynonyms = group["Synonymns"].ToObject>(); + + if (AddJapaneseTitle && allSynonyms.ContainsKey(0)) + synonyms.Add(allSynonyms[0]); + if (AddRomajiTitle && allSynonyms.ContainsKey(1)) + synonyms.Add(allSynonyms[1]); + if (AddAlternativeTitles && allSynonyms.ContainsKey(2)) { + synonyms.AddRange(allSynonyms[2].Split(',').Select(t => t.Trim())); + } + } } List Category = null; diff --git a/src/Jackett.Common/Models/IndexerConfig/Bespoke/ConfigurationDataAnimeBytes.cs b/src/Jackett.Common/Models/IndexerConfig/Bespoke/ConfigurationDataAnimeBytes.cs index 0099fe1821153..8d97687ddf6b3 100644 --- a/src/Jackett.Common/Models/IndexerConfig/Bespoke/ConfigurationDataAnimeBytes.cs +++ b/src/Jackett.Common/Models/IndexerConfig/Bespoke/ConfigurationDataAnimeBytes.cs @@ -5,7 +5,9 @@ internal class ConfigurationDataAnimeBytes : ConfigurationDataUserPasskey public BoolItem IncludeRaw { get; private set; } //public DisplayItem DateWarning { get; private set; } public BoolItem PadEpisode { get; private set; } - public BoolItem AddSynonyms { get; private set; } + public BoolItem AddJapaneseTitle { get; private set; } + public BoolItem AddRomajiTitle { get; private set; } + public BoolItem AddAlternativeTitles { get; private set; } public BoolItem FilterSeasonEpisode { get; private set; } public ConfigurationDataAnimeBytes(string instructionMessageOptional = null) @@ -14,7 +16,9 @@ public ConfigurationDataAnimeBytes(string instructionMessageOptional = null) IncludeRaw = new BoolItem() { Name = "IncludeRaw", Value = false }; //DateWarning = new DisplayItem("This tracker does not supply upload dates so they are based off year of release.") { Name = "DateWarning" }; PadEpisode = new BoolItem() { Name = "Pad episode number for Sonarr compatability", Value = false }; - AddSynonyms = new BoolItem() { Name = "Add releases for each synonym title", Value = true }; + AddJapaneseTitle = new BoolItem() { Name = "Add releases for Japanese Title", Value = false }; + AddRomajiTitle = new BoolItem() { Name = "Add releases for Romaji Title", Value = false }; + AddAlternativeTitles = new BoolItem() { Name = "Add releases for Alternative Title(s)", Value = false }; FilterSeasonEpisode = new BoolItem() { Name = "Filter results by season/episode", Value = false }; Instructions = new DisplayItem(instructionMessageOptional) { Name = "" }; }