Skip to main content
The Dumpstarr Database is open to contributions. Whether you’ve found a sourcing problem, want to add a new custom format, or have a show-specific fix to share, this page explains how everything fits together.
Profilarr users pull from the stable branch. Contributions merged to stable are immediately available on the next Profilarr sync.

Reporting issues

If you encounter a sourcing problem, incorrect score, or broken regex, open an issue on GitHub: https://github.com/Dumpstarr/Database/issues Include:
  • The show or movie name
  • The release name (full filename if possible)
  • What you expected to happen vs. what actually happened
  • The profile you are using
You can also reach the team on Discord: https://discord.gg/TbYW2Q4hGv

YAML file structure

The database has two main file types:

custom_formats/*.yml

Custom formats define what to match. They reference one or more regex patterns as named conditions.
name: Bad Naming Scheme
description: Matches releases from HONE that are not explicitly from the HONE group.
tags:
  - Banned
conditions:
  - name: Not HONE Groups
    negate: true
    pattern: HONE Groups
    required: true
    type: release_group
  - name: HONE Release Title
    negate: false
    pattern: HONE Release Title
    required: true
    type: release_title
tests: []
Key fields:
FieldDescription
nameDisplay name used in Radarr/Sonarr and in profile score assignments
descriptionHuman-readable explanation of what this format targets
tagsOrganizational tags (e.g. Banned, Custom, Scrubs)
conditionsList of conditions — all required: true conditions must match
negateWhen true, the condition matches if the pattern does not match
typeWhat to match against: release_title, release_group, etc.
patternEither a raw regex string or the name of a regex_patterns/*.yml file

regex_patterns/*.yml

Regex patterns are reusable named patterns that can be referenced by custom formats.
name: Adventure Time Season 8
pattern: (?i)^adventure[ ._-]+time[ ._-]+S08.*-(CtrlHD|EPSiLON|H3B|NTb|RTN).*
description: Matches releases for season 8 of Adventure Time from groups that do
  not follow the TVDB ordering.
tags:
  - Custom
  - Banned
tests:
  - id: 1
    input: Adventure.Time.S08E01.1080p.WEB-DL-NTb
    expected: true
  - id: 2
    input: Adventure.Time.S08E01.1080p.WEB-DL-NTb-AsRequested
    expected: false
Key fields:
FieldDescription
nameMust match the pattern value used in any custom format that references it
patternThe regex string
descriptionHuman-readable explanation
tagsOrganizational tags
testsOptional list of test cases with input and expected (true/false)

Adding a custom format

1

Create the regex pattern file

Add a new file to regex_patterns/ if your format needs a reusable pattern:
name: My New Pattern
pattern: (?i)\bmy[-. _]?pattern\b
description: Matches releases containing "my pattern" in the title.
tags:
  - Custom
tests:
  - id: 1
    input: Show.S01E01.1080p.WEB-DL-MyGroup
    expected: true
  - id: 2
    input: Show.S01E01.1080p.WEB-DL-OtherGroup
    expected: false
2

Create the custom format file

Add a new file to custom_formats/ referencing your pattern:
name: My Custom Format
description: Brief description of what this format matches and why.
tags:
  - Custom
conditions:
  - name: My New Pattern
    negate: false
    pattern: My New Pattern
    required: true
    type: release_title
tests: []
3

Add the format to a profile

If the format should be scored in an existing profile, add it to the appropriate custom_formats, custom_formats_radarr, or custom_formats_sonarr list in the relevant profiles/*.yml file:
custom_formats:
  - name: My Custom Format
    score: -10000

Adding a regex pattern

If you only need to add a standalone regex (e.g. a new release group list or a show-specific identifier), add it directly to regex_patterns/:
name: My Group List
pattern: (?<=^|[\s.-])(GroupA|GroupB|GroupC)\b
description: Known release groups for a specific use case.
tags:
  - Custom
tests: []
The name field must exactly match any pattern reference used in a custom format condition.

Testing changes

Profilarr imports the database from the stable branch. To verify your changes before merging:
  1. Point a test Profilarr instance at your fork/branch.
  2. Trigger a manual sync in Profilarr to pull your updated files.
  3. Confirm the custom formats and scores appear correctly in Radarr/Sonarr.
  4. Use the test cases in the regex pattern files to validate match behavior — these are run by Profilarr on import.
Do not manually edit the regex_patterns/Dictionarry *.yml files. These are overwritten daily by the automated Dictionarry sync workflow. Any manual changes will be lost on the next sync run.

Build docs developers (and LLMs) love