Jackett/Jackett · error · Exception
Duplicate music-search param: {paramStr}
Error message
Duplicate music-search param: {paramStr} What it means
Thrown by TorznabCapabilities.ParseMusicSearchParams when a music-search parameter is repeated. The music capability list (artist, album, label, year, etc.) must be unique; a duplicate indicates a malformed indexer definition.
Source
Thrown at src/Jackett.Common/Models/TorznabCapabilities.cs:189
if (Enum.TryParse(paramStr, true, out MovieSearchParam param))
if (!MovieSearchParams.Contains(param))
MovieSearchParams.Add(param);
else
throw new Exception($"Duplicate movie-search param: {paramStr}");
else
throw new Exception($"Not supported movie-search param: {paramStr}");
}
private void ParseMusicSearchParams(IEnumerable<string> paramsList)
{
if (paramsList == null)
return;
foreach (var paramStr in paramsList)
if (Enum.TryParse(paramStr, true, out MusicSearchParam param))
if (!MusicSearchParams.Contains(param))
MusicSearchParams.Add(param);
else
throw new Exception($"Duplicate music-search param: {paramStr}");
else
throw new Exception($"Not supported music-search param: {paramStr}");
}
private void ParseBookSearchParams(IEnumerable<string> paramsList)
{
if (paramsList == null)
return;
foreach (var paramStr in paramsList)
if (Enum.TryParse(paramStr, true, out BookSearchParam param))
if (!BookSearchParams.Contains(param))
BookSearchParams.Add(param);
else
throw new Exception($"Duplicate book-search param: {paramStr}");
else
throw new Exception($"Not supported book-search param: {paramStr}");
}
View on GitHub (pinned to adff194147)
Solutions
- Remove the duplicate music-search param from the indexer definition.
- De-duplicate (Distinct()) dynamically generated param lists before parsing.
- Pull an updated indexer definition from the Jackett repository.
Example fix
// before
capabilities.ParseMusicSearchParams(new[] { "artist", "album", "artist" }); // throws
// after
capabilities.ParseMusicSearchParams(new[] { "artist", "album" }); Defensive patterns
Strategy: validation
Validate before calling
var unique = paramsList?.Distinct(StringComparer.OrdinalIgnoreCase); capabilities.ParseMusicSearchParams(unique);
Type guard
static bool HasDuplicateMusicParams(IEnumerable<string> p) =>
p.GroupBy(x => x, StringComparer.OrdinalIgnoreCase).Any(g => g.Count() > 1); Try / catch
try { capabilities.ParseMusicSearchParams(list); }
catch (Exception ex) when (ex.Message.StartsWith("Duplicate music-search"))
{ logger.Error(ex); } Prevention
- Author music caps with unique params.
- Distinct() generated lists.
- Lint definitions in CI.
When it happens
Trigger: The list passed to ParseMusicSearchParams contains the same MusicSearchParam twice, so MusicSearchParams.Contains(param) returns true on the second pass.
Common situations: Indexer CapsMapping authored with a duplicated music param; capabilities JSON with repeated tokens; merging definitions without de-duplication.
Related errors
- Duplicate tv-search param: {paramStr}
- Not supported tv-search param: {paramStr}
- Duplicate movie-search param: {paramStr}
- Not supported movie-search param: {paramStr}
- Not supported music-search param: {paramStr}
AI-assisted analysis of Jackett/Jackett@adff194147 (2026-08-13).
Data as JSON: /api/errors/c6e22cbed5469b20.
Report an issue: GitHub.