Skip to main content

The documentation here is for an unreleased version of Recyclarr.

Visit the documentation site for the Current Version instead.

Override Examples

This page demonstrates how to extend or override official resources using custom providers. Each resource type uses a different identification key for merging - see Resource Identification Keys for the complete reference.

Key Concepts

When working with resource providers:

  • Extend: Use a unique key to add new resources alongside official ones
  • Override: Use the same key as an official resource to replace it entirely

All key comparisons are case-insensitive.

Media Naming

Media naming uses dictionary keys (like default, plex-imdb) for identification.

Sonarr Naming Example

Official TRaSH Guides provides naming schemes with keys like default. To add your own schemes or override existing ones:

{
"season": {
"default": "Season {season:00}"
},
"series": {
"default": "{Series TitleYear}",
"plex-tvdb": "{Series TitleYear} {tvdb-{TvdbId}}"
},
"episodes": {
"standard": {
"default": "{Series TitleYear} - S{season:00}E{episode:00} - {Episode CleanTitle}",
"my-compact": "{Series Title} - {season:00}x{episode:00} - {Episode Title}"
},
"daily": {
"default": "{Series TitleYear} - {Air-Date} - {Episode CleanTitle}"
},
"anime": {
"default": "{Series TitleYear} - S{season:00}E{episode:00} - {absolute:000} - {Episode CleanTitle}"
}
}
}

In this example:

  • default keys override the official TRaSH naming schemes
  • plex-tvdb overrides the official key; my-compact extends with a new option

Radarr Naming Example

{
"folder": {
"default": "{Movie CleanTitle} ({Release Year})",
"plex-imdb": "{Movie CleanTitle} ({Release Year}) {imdb-{ImdbId}}"
},
"file": {
"standard": "{Movie CleanTitle} ({Release Year}) {[Quality Full]}",
"my-detailed": "{Movie CleanTitle} ({Release Year}) - {Edition Tags} {[Custom Formats]}{[Quality Full]}{-Release Group}"
}
}

Config Includes

Config includes use the id field in includes.json for identification.

Overriding an Official Include

To replace the official radarr-custom-formats-hd-bluray-web include with your own version:

includes.json:

[
{
"id": "radarr-custom-formats-hd-bluray-web",
"template": "radarr/includes/custom-formats/hd-bluray-web.yml"
}
]

Your include with the same ID completely replaces the official version.

Adding New Includes

Use unique IDs to add alongside official includes:

[
{
"id": "my-radarr-anime-quality",
"template": "radarr/includes/anime-quality.yml"
},
{
"id": "my-sonarr-language-german",
"template": "sonarr/includes/language-german.yml"
}
]

Config Templates

Config templates use the id field in templates.json for identification.

Overriding an Official Template

To replace the official hd-bluray-web template:

templates.json:

[
{
"id": "hd-bluray-web",
"template": "radarr/templates/hd-bluray-web.yml"
}
]

Adding New Templates

[
{
"id": "my-radarr-4k-hdr",
"template": "radarr/templates/4k-hdr.yml"
}
]

Custom Formats

Custom formats use the trash_id field in each JSON file for identification.

Overriding an Official Custom Format

Copy the official custom format JSON, modify it as needed, and keep the same trash_id:

{
"trash_id": "496f355514737f7d83bf7aa4d24f8169",
"name": "TrueHD ATMOS (Modified)",
"specifications": [
{
"name": "TrueHD ATMOS",
"implementation": "ReleaseTitleSpecification",
"fields": {
"value": "\\b(TrueHD.?Atmos|Atmos.?TrueHD)\\b"
}
}
]
}

Since your provider is listed after the implicit official provider, your version takes precedence.

Adding New Custom Formats

Use a unique trash_id (UUID or descriptive slug):

{
"trash_id": "my-german-dub",
"name": "German Dub",
"specifications": [
{
"name": "German Language",
"implementation": "LanguageSpecification",
"fields": {
"value": 4
}
}
]
}

Provider Configuration

For all override scenarios, add your provider to settings.yml:

resource_providers:
# For trash-guides content (naming, quality sizes, custom formats)
- name: my-guides
type: trash-guides
clone_url: https://github.com/yourname/my-guides.git
reference: main

# For config templates and includes
- name: my-templates
type: config-templates
clone_url: https://github.com/yourname/my-templates.git
reference: main

# For simple custom format additions (no metadata.json needed)
- name: my-cfs
type: custom-formats
path: /home/user/custom-formats/radarr
service: radarr

Resources from your providers override official ones with matching keys. Resources with unique keys are added alongside official content.