Fixed: (Cardigann) Implement validate as field filter

This commit is contained in:
Bogdan
2023-02-23 09:33:30 +02:00
parent 888b514dd8
commit d397cdf5fb
2 changed files with 19 additions and 28 deletions

View File

@@ -585,8 +585,12 @@ namespace NzbDrone.Core.Indexers.Cardigann
value = release.PosterUrl;
break;
case "genre":
release.Genres ??= new List<string>();
char[] delimiters = { ',', ' ', '/', ')', '(', '.', ';', '[', ']', '"', '|', ':' };
release.Genres = release.Genres.Union(value.Split(delimiters, System.StringSplitOptions.RemoveEmptyEntries)).ToList();
release.Genres = release.Genres
.Union(value.Split(delimiters, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries))
.Select(x => x.Replace("_", " "))
.ToList();
value = string.Join(", ", release.Genres);
break;
case "year":
@@ -632,29 +636,14 @@ namespace NzbDrone.Core.Indexers.Cardigann
switch (filter.Name)
{
case "andmatch":
var characterLimit = -1;
if (filter.Args != null)
{
characterLimit = int.Parse(filter.Args);
}
var queryKeywords = variables[".Keywords"] as string;
// See IndexerBase.FilterReleasesByQuery
break;
case "strdump":
// 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);
_logger.Debug($"CardigannIndexer ({_definition.Id}): row strdump: {row}");
break;
default:
_logger.Error(string.Format("CardigannIndexer ({0}): Unsupported rows filter: {1}", _definition.Id, filter.Name));
_logger.Error($"CardigannIndexer ({_definition.Id}): Unsupported rows filter: {filter.Name}");
break;
}
}