Reference documentation for the YAML configuration. For various examples, see the [[Configuration
Examples]] page.
# Summary
The Recyclarr program utilizes YAML for its configuration files. The configuration can be set up
multiple ways, offering a lot of flexibility:
- You may use one or more YAML files simultaneously, allowing you to divide your configuration
properties up in such a way that you can control what gets updated based on which files you
specify.
- Each YAML file may have one or more service configurations. This means you can have one file
define settings for just Sonarr, Radarr, or both services. The program will only read the
configuration from the file relevant for the specific service subcommand you specified (e.g.
`recyclarr sonarr` will only read the Sonarr config in the file, even if Radarr config is
present).
> **Remember**: If you do not specify the `--config` argument, the program will look for
> `recyclarr.yml` in the [[application data directory|File-Structure]].
# YAML Reference
Table of Contents
- [Sonarr](#sonarr)
- [Basic Settings](#basic-settings)
- [Quality Definition Settings](#quality-definition-settings)
- [Release Profile Settings](#release-profile-settings)
- [Radarr](#radarr)
- [Basic Settings](#basic-settings-1)
- [Quality Definition Settings](#quality-definition-settings-1)
- [Custom Format Settings](#custom-format-settings)
## Sonarr
```yml
sonarr:
- base_url: http://localhost:8989
api_key: f7e74ba6c80046e39e076a27af5a8444
# Quality Definition Settings
quality_definition: hybrid
# Release Profile Settings
release_profiles:
- trash_ids:
- d428eda85af1df8904b4bbe4fc2f537c # Anime - First release profile
- 6cd9e10bb5bb4c63d2d7cd3279924c7b # Anime - Second release profile
strict_negative_scores: true
tags: [anime]
- trash_ids:
- EBC725268D687D588A20CBC5F97E538B # Low Quality Groups
- 1B018E0C53EC825085DD911102E2CA36 # Release Sources (Streaming Service)
- 71899E6C303A07AF0E4746EFF9873532 # P2P Groups + Repack/Proper
strict_negative_scores: false
tags: [tv]
- trash_ids: [76e060895c5b8a765c310933da0a5357] # Optionals
filter:
include:
- 436f5a7d08fbf02ba25cb5e5dfe98e55 # Ignore Dolby Vision without HDR10 fallback
- f3f0f3691c6a1988d4a02963e69d11f2 # Ignore The Group -SCENE
tags: [tv]
```
### Basic Settings
- `base_url` **(Required)**
The base URL of your Sonarr instance. Basically this is the URL you bookmark to get to the front
page.
- `api_key` **(Required)**
The API key that Recyclarr should use to synchronize settings to your instance. You can obtain
your API key by going to `Sonarr > Settings > General` and copy & paste the "API Key" under the
"Security" group/header.
### Quality Definition Settings
- `quality_definition` (Optional; *Default: No quality definitions are synced*)
The quality definition [from the TRaSH Guide's Quality Settings page][sonarr_quality] that should
be parsed and uploaded to Sonarr. Only the below values are permitted here.
- `anime` Represents the "Sonarr Quality Definitions" table specifically for Anime
- `series` Represents the "Sonarr Quality Definitions" table intended for normal TV Series.
Sometimes referred to as non-anime.
- `hybrid` A combination of both the `anime` and `series` tables that is calculated by comparing
each row and taking both the smallest minimum and largest maximum values. The purpose of the
Hybrid type is to build the most permissive quality definition that the guide will allow. It's a
good idea to use this one if you want more releases to be blocked by your release profiles
instead of quality.
[sonarr_quality]: https://trash-guides.info/Sonarr/Sonarr-Quality-Settings-File-Size/
### Release Profile Settings
- `release_profiles` (Optional; *Default: No release profiles are synced*)
A list of release profiles to parse from the guide. Each object in this list supports the below
properties.
- `trash_ids` **(Required)**
A list of one or more Trash IDs taken from [the Trash Guide Sonarr JSON files][sonarrjson].
- `strict_negative_scores` (Optional; *Default: `false`*)
Enables preferred term scores less than 0 to be instead treated as "Must Not Contain" (ignored)
terms. For example, if something is "Preferred" with a score of `-10`, it will instead be put in
the "Must Not Contains" section of the uploaded release profile. Must be `true` or `false`.
- `tags` (Optional; *Default: Empty list*)
A list of one or more strings representing tags that will be applied to this release profile.
Tags are created in Sonarr if they do not exist. All tags on an existing release profile (if
present) are removed and replaced with only the tags in this list. If no tags are specified, no
tags will be set on the release profile.
- `filter` (Optional)
Defines various ways that release profile terms from the guide are synchronized with Sonarr. Any
filters below that takes a list of `trash_id` values, those values come, again, from the [Sonarr
JSON Files][sonarrjson]. There is a `trash_id` field next to each `term` field; that is what you
use.
- `include`
A list of `trash_id` values representing terms (Required, Ignored, or Preferred) that should
be included in the created Release Profile in Sonarr. Terms that are NOT specified here are
excluded automatically. Not compatible with `exclude` and will take precedence over it.
- `exclude`
A list of `trash_id` values representing terms (Required, Ignored, or Preferred) that should
be excluded from the created Release Profile in Sonarr. Terms that are NOT specified here are
included automatically. Not compatible with `include`; this list is not used if it is present.
[sonarrjson]: https://github.com/TRaSH-/Guides/tree/master/docs/json/sonarr
## Radarr
```yml
radarr:
- base_url: http://localhost:7878
api_key: bf99da49d0b0488ea34e4464aa63a0e5
# Quality Definition Settings
quality_definition:
type: movie
preferred_ratio: 0.5
# Custom Format Settings
delete_old_custom_formats: false
custom_formats:
- names:
- BR-DISK
- EVO (no WEB-DL)
- LQ
- x265 (720/1080p)
- 3D
quality_profiles:
- name: HD-1080p
- name: HD-720p2
score: -1000
- names:
- TrueHD ATMOS
- DTS X
quality_profiles:
- name: SD
```
### Basic Settings
- `base_url` **(Required)**
The base URL of your Radarr instance. Basically this is the URL you bookmark to get to the front
page.
- `api_key` **(Required)**
The API key that Recyclarr should use to synchronize settings to your instance. You can obtain
your API key by going to `Radarr > Settings > General` and copy & paste the "API Key" under the
"Security" group/header.
### Quality Definition Settings
- `quality_definition` (Optional; *Default: No quality definitions are synced*)
Specify information related to Radarr quality definition processing here. Only the following child
properties are permitted.
- `type` **(Required)**
The quality definition from the [Radarr Quality Settings (File Size)][radarr_quality] page in
the TRaSH Guides that should be parsed and uploaded to Radarr. Only the below values are
permitted here.
- `movie`: Currently the only supported type. Represents the only table on that page and is
intended for general use with all movies in Radarr.
- `preferred_ratio` (Optional; *Default: `1.0`*)
A value `0.0` to `1.0` that represents the percentage (interpolated) position of that middle
slider you see when you enable advanced settings on the Quality Definitions page in Radarr. A
value of `0.0` means the preferred quality will match the minimum quality. Likewise, `1.0` will
match the maximum quality. A value such as `0.5` will keep it halfway between the two.
Any value less than `0` or greater than `1` will result in a warning log printed and the value
will be clamped.
[radarr_quality]: https://trash-guides.info/Radarr/Radarr-Quality-Settings-File-Size/
### Custom Format Settings
For details on the way Custom Formats are synchronized to Radarr, visit the [[Custom Format
Synchronization]] page.
- `delete_old_custom_formats` (Optional; *Default: `false`*)
If enabled, custom formats that you remove from your YAML configuration OR that are removed from
the guide will be deleted from your Radarr instance. Note that this *only* applies to custom
formats that Recyclarr has synchronized to Radarr. Custom formats that you have added manually in
Radarr **will not be deleted** if you enable this setting.
- `custom_formats` (Optional; *Default: No custom formats are synced*)
A list of one or more sets of custom formats (by name and/or trash_id), each with an optional set
of quality profiles names that identify which quality profiles to assign the scores for those
custom formats to. The child properties documented below apply to each element of this list.
> **Note:** Even though `names` and `trash_ids` below are marked *optional*, at least one of them
> is required. For example, if `names` is empty you must use `trash_ids` and vice versa.
>
> When would you use `names` or `trash_ids`? Rule of thumb: Stick to `names`. It's more user
> friendly than IDs, because you can look at a name and know what custom format it is referring
> to. The IDs are there for certain corner cases (you can read more about those in the relevant
> bullet point below).
- `names` (Optional; *Default: `trash_ids` is required*)
A list of one or more custom format names to synchronize to Radarr. The names *must* be taken
from the JSON itself in the guide, for example:
```json
{
"trash_id": "496f355514737f7d83bf7aa4d24f8169",
"name": "TrueHD ATMOS",
"includeCustomFormatWhenRenaming": false
}
```
You take the value of `"name"` above and add it to the list of names like so:
```yml
names:
- TrueHD ATMOS
```
> **A Few Things to Remember**
>
> - If `delete_old_custom_formats` is set to true, custom formats are **deleted** in Radarr if
> you remove them from this list.
> - It's OK for the same custom format to exist in multiple lists of `names`. Recyclarr will
> only ever synchronize it once. Allowing it to be specified multiple times allows you to
> assign it to different profiles with different scores.
- `trash_ids` (Optional; *Default: `names` is required*)
A list of one or more Trash IDs of custom formats to synchronize to Radarr. The IDs *must* be
taken from the value of the `"trash_id"` property in the JSON itself. It will look like the
following:
```json
{
"trash_id": "496f355514737f7d83bf7aa4d24f8169",
}
```
Normally you should be using `names` to specify which custom formats you want. There are a few
rare cases where you might prefer (or need) to use the ID instead:
- Sometimes there are custom formats in the guide with the same name, such as "DoVi". In this
case, Recyclarr will issue you a warning instructing you to use the Trash ID instead of the
name to resolve the ambiguity.
- Trash IDs never change. Custom format names can change. Recyclarr keeps an internal cache of
every custom format its seen to reduce the need for your config names to be updated. But it's
not 100% fool proof. Using the ID could mean less config maintenance for you in the long run
at the expense of readability.
Most of the rules and semantics are identical to the `names` property, which is documented
above. Just apply that logic to the ID instead of the name.
Lastly, as a tip, to ease the readability concerns of using IDs instead of names, leave a
comment beside the Trash ID in your configuration so it can be easily identified later. For
example:
```yml
trash_ids:
- 5d96ce331b98e077abb8ceb60553aa16 # dovi
- a570d4a0e56a2874b64e5bfa55202a1b # flac
```
- `quality_profiles` (Optional; *Default: No quality profiles are changed*)
One or more quality profiles to update with the scores from the custom formats listed above.
Scores are taken from the guide by default, with an option to override the score for all of
them. Each object in the list must use the properties below.
- `name` **(Required)**
The name of one of the quality profiles in Radarr.
- `score` (Optional; *Default: Use scores from the guide*)
A positive or negative number representing the score to apply to *all* custom formats listed
in the `names` list. A score of `0` is also acceptable, which effectively disables the custom
formats without having to delete them.
- `reset_unmatched_scores` (Optional; *Default: `false`*)
If set to `true`, enables setting scores to `0` in quality profiles where either a name was
not mentioned in the `names` array *or* it was in that list but did not get a score (e.g. no
score in guide). If `false`, scores are never altered unless it is listed in the `names` array
*and* has a valid score to assign.