diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs index 884d52d36..216057a21 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannBase.cs @@ -30,7 +30,7 @@ public class CardigannBase protected readonly IndexerCapabilitiesCategories _categories = new(); protected readonly List _defaultCategories = new(); - protected readonly string[] OptionalFields = new string[] { "imdb", "imdbid", "tmdbid", "rageid", "tvdbid", "tvmazeid", "traktid", "doubanid", "poster", "banner", "description", "genre" }; + protected readonly string[] OptionalFields = new string[] { "imdb", "imdbid", "tmdbid", "rageid", "tvdbid", "tvmazeid", "traktid", "doubanid", "poster", "banner", "description", "genre", "languages", "subs" }; protected static readonly string[] _SupportedLogicFunctions = { diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs index a9e05aa72..c27d5fef1 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs @@ -657,13 +657,27 @@ private string ParseFields(string value, string fieldName, TorrentInfo release, break; case "genre": release.Genres ??= new List(); - char[] delimiters = { ',', ' ', '/', ')', '(', '.', ';', '[', ']', '"', '|', ':' }; + char[] delimitersG = { ',', ' ', '/', ')', '(', '.', ';', '[', ']', '"', '|', ':' }; release.Genres = release.Genres - .Union(value.Split(delimiters, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)) + .Union(value.Split(delimitersG, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)) .Select(x => x.Replace("_", " ")) .ToList(); value = string.Join(", ", release.Genres); break; + case "languages": + release.Languages ??= new List(); + char[] delimitersL = { ',', ' ', '/', ')', '(', '.', ';', '[', ']', '"', '|', ':' }; + var releaseLanguages = release.Languages.Union(value.Split(delimitersL, StringSplitOptions.RemoveEmptyEntries)); + release.Languages = releaseLanguages.Select(x => x.Replace("_", " ")).ToList(); + value = string.Join(",", release.Languages); + break; + case "subs": + release.Subs ??= new List(); + char[] delimitersS = { ',', ' ', '/', ')', '(', '.', ';', '[', ']', '"', '|', ':' }; + var releaseSubs = release.Subs.Union(value.Split(delimitersS, StringSplitOptions.RemoveEmptyEntries)); + release.Subs = releaseSubs.Select(x => x.Replace("_", " ")).ToList(); + value = string.Join(",", release.Subs); + break; case "year": release.Year = ParseUtil.CoerceInt(value); value = release.Year.ToString();