From 7348ad55c0c66d8d0e40f1f0894827c7e6707431 Mon Sep 17 00:00:00 2001 From: Gabriel Couto Date: Wed, 19 Nov 2025 12:12:17 -0300 Subject: [PATCH 1/2] parse language and subs --- .../Definitions/Cardigann/CardigannBase.cs | 2 +- .../Definitions/Cardigann/CardigannParser.cs | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) 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(); From 05b52405c73244451ac537ee0af6cfa495e30af3 Mon Sep 17 00:00:00 2001 From: Gabriel Couto Date: Wed, 19 Nov 2025 15:58:42 -0300 Subject: [PATCH 2/2] fix delimiters --- .../Indexers/Definitions/Cardigann/CardigannParser.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs index c27d5fef1..42b2ad17c 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs @@ -666,15 +666,15 @@ private string ParseFields(string value, string fieldName, TorrentInfo release, break; case "languages": release.Languages ??= new List(); - char[] delimitersL = { ',', ' ', '/', ')', '(', '.', ';', '[', ']', '"', '|', ':' }; - var releaseLanguages = release.Languages.Union(value.Split(delimitersL, StringSplitOptions.RemoveEmptyEntries)); + char[] delimitersL = { ',' }; + var releaseLanguages = release.Languages.Union(value.Split(delimitersL, StringSplitOptions.TrimEntries | 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)); + char[] delimitersS = { ',' }; + var releaseSubs = release.Subs.Union(value.Split(delimitersS, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)); release.Subs = releaseSubs.Select(x => x.Replace("_", " ")).ToList(); value = string.Join(",", release.Subs); break;