diff --git a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs index 1dda23ec6..6544b624d 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Cardigann/CardigannParser.cs @@ -594,8 +594,9 @@ private string ParseFields(string value, string fieldName, TorrentInfo release, value = release.PosterUrl; break; case "genre": - release.Genres = release.Genres.Union(value.Split(',')).ToList(); - value = string.Join(",", release.Genres); + char[] delimiters = { ',', ' ', '/', ')', '(', '.', ';', '[', ']' }; + release.Genres = release.Genres.Union(value.Split(delimiters, System.StringSplitOptions.RemoveEmptyEntries)).ToList(); + value = string.Join(", ", release.Genres); break; case "year": release.Year = ParseUtil.CoerceInt(value); @@ -653,6 +654,14 @@ private bool ParseRowFilters(List filters, ReleaseInfo release, Dic // for debugging _logger.Debug(string.Format("CardigannIndexer ({0}): row strdump: {1}", _definition.Id, row.ToString())); break; + case "validate": + char[] delimiters = { ',', ' ', '/', ')', '(', '.', ';', '[', ']' }; + var args = (string)filter.Args; + var argsList = args.ToLower().Split(delimiters, StringSplitOptions.RemoveEmptyEntries); + var validList = argsList.ToList(); + var validIntersect = validList.Intersect(row.ToString().ToLower().Split(delimiters, StringSplitOptions.RemoveEmptyEntries)).ToList(); + row = string.Join(", ", validIntersect); + break; default: _logger.Error(string.Format("CardigannIndexer ({0}): Unsupported rows filter: {1}", _definition.Id, filter.Name)); break;