Skip to content

Field Reference

Every field in the FunkArr ruleset JSON format, organized by section.

Root Fields

FieldTypeRequiredDefaultDescription
topicstringYesDisplay name of the show or movie. Must match the Mediathek topic field exactly. Used for topic-based lookup when Sonarr/Radarr trigger a search.
aliasesstring[]No[]Alternative topic names. FunkArr checks aliases when the primary topic doesn't match. Useful when a show appears under different names across broadcasters (e.g., "Tatort aus Österreich").
mediaobjectYesExternal metadata IDs and media type. See Media Fields.
confidencenumberNo0Default confidence score (0.0–1.0) applied to rules that don't set their own. Higher values mean Sonarr/Radarr trust the match more. Use 1.0 for reliable matches, lower for fuzzy ones.
rulesarrayYesOrdered list of matching rules. See Rule Fields.
standalonebooleanNofalseLocal only. When true, the local ruleset is used as-is — the community base is ignored entirely. No merging happens.
disablestring[]No[]Local only. List of community rule IDs to skip during merge. The rules are removed before local rules are applied. Each value must match a rule id in the community base.

Media Fields

The media object links a ruleset to external metadata providers so Sonarr and Radarr can identify the show or movie.

FieldTypeRequiredDefaultDescription
namestringYesDisplay name for Sonarr/Radarr. Usually the same as topic, but can differ (e.g., topic "Checker Reportagen" → media name "Checker Julian").
typestringYes"show"Either "show" or "movie". Determines whether FunkArr generates Newznab TV or movie categories.
tvdbIdintegerNoTheTVDB series or movie ID. Sonarr uses this for matching. Look it up at thetvdb.com.
imdbIdstringNoIMDb ID in tt format (e.g., "tt0806910"). Used by both Sonarr and Radarr.
tmdbIdintegerNoTheMovieDB ID. Radarr uses this for movie matching.

TIP

At least one external ID (tvdbId, imdbId, or tmdbId) is strongly recommended. Without one, Sonarr/Radarr may not be able to match the download to the correct show or movie.

Rule Fields

Each entry in the rules array defines one matching attempt. Rules are evaluated in priority order — the first successful match wins.

FieldTypeRequiredDefaultDescription
idstringYesUnique identifier for this rule within the ruleset. Must be kebab-case (lowercase letters, digits, hyphens, minimum 3 characters). Used for override targeting when local rules replace community rules.
priorityintegerNo0Sort order for rule evaluation. Lower values are tried first. When two rules have the same priority, array order is used as tiebreaker.
strategystringYesIdentification strategy. Determines how season/episode information is extracted. See Strategies for details.
confidencenumberNoOverride the ruleset's default confidence for this specific rule. Use a lower value for rules that are less certain (e.g., a fallback regex).
filtersobjectNoPre-filter conditions that must pass before identification is attempted. See Filter Fields.
seasonRegexstringNoRegex pattern to extract a season number. Used with seasonAndEpisodeNumber strategy. Must contain at least one capture group.
episodeRegexstringNoRegex pattern to extract an episode number. Used with seasonAndEpisodeNumber and byAbsoluteEpisodeNumber strategies. Must contain at least one capture group.
captureGroupintegerNo1Which regex capture group to use for extraction (0-indexed). Defaults to the first capture group.
titleRulesarrayNoTitle construction parts for itemTitleExact, itemTitleIncludes, and itemTitleEqualsAirdate strategies. See Title Rule Fields.

Filter Fields

The filters object uses boolean logic to narrow which Mediathek entries enter a rule. Filters run before identification — if a filter fails, the rule is skipped and the next rule is tried.

Filter Group

FieldTypeDescription
allarrayAND — every condition must match.
anyarrayOR — at least one condition must match.
notarrayNOT — none of the conditions may match.

Each array contains filter nodes. A node is either a condition (leaf) or a nested filter group (for complex logic).

Filter Condition

FieldTypeRequiredDescription
fieldstringYesThe Mediathek field to check. One of: title, topic, channel, description, duration, timestamp.
opstringYesComparison operator. One of: eq, contains, notContains, greaterThan, lessThan, regex.
valuestringYesThe value to compare against. For numeric operators (greaterThan, lessThan), pass the number as a string (e.g., "60").

Filter Fields Reference

FieldTypeDescriptionExample
titlestringThe item title from the Mediathek (e.g., "Tatort: Borowski und die Kinder")"Tatort:"
topicstringThe topic/show name (e.g., "Tatort")"Tatort"
channelstringThe broadcaster (e.g., "ARD", "ZDF", "ORF")"ARD"
descriptionstringItem description text"Krimi"
durationnumberDuration in minutes"60"
timestampnumberBroadcast timestamp (Unix epoch)"1726000000"

Filter Operators Reference

OperatorDescriptionExample
eqExact string matchchannel eq "ARD"
containsSubstring match (case-sensitive)title contains "Tatort"
notContainsSubstring must not be presenttitle notContains "Trailer"
greaterThanNumeric greater-thanduration greaterThan "25"
lessThanNumeric less-thanduration lessThan "120"
regexRegular expression matchtitle regex "S\\d{2}E\\d{2}"

See the Filter Cookbook for common patterns and examples.

Title Rule Fields

Title rules construct or extract a title string piece by piece, left to right. Used with itemTitleExact, itemTitleIncludes, and itemTitleEqualsAirdate strategies.

FieldTypeRequiredDescription
typestringYesEither "static" (literal text) or "regex" (extract from a Mediathek field).
valuestringNoThe literal text to append. Used when type is "static".
fieldstringNoThe Mediathek field to run the regex against. Used when type is "regex". One of: title, topic, channel, description.
patternstringNoRegex pattern to match. Used when type is "regex". The matched text (or specified capture group) is appended to the constructed title.
captureGroupintegerNoWhich capture group to extract (0 = full match, 1 = first group, etc.). Defaults to 0 (full match) when omitted.

Example

This title rule set from the Tatort community ruleset:

json
"titleRules": [
  { "type": "static", "value": " - " },
  { "type": "regex", "field": "title", "pattern": "(?<=Tatort:\\s*)\\S.*" }
]

Given the Mediathek title "Tatort: Borowski und die Kinder", this produces: " - Borowski und die Kinder". With the itemTitleIncludes strategy, Sonarr searches for any episode title containing that string.