Custom Formats#

Custom formats are the primary method for controlling how releases are selected and prioritised in Radarr.

Criteria can be something as simple as a single preferred word, or as complex as multiple regular expressions matching for a variety of complementing media attributes, and in any case, Radarr allows you to flexibly determine how releases should be picked when managing movies.

Note

For more information on how to use custom formats in Radarr, refer to How to setup Quality Profiles.

In Buildarr, custom formats can be configured using two different methods: importing from TRaSH-Guides, or manually definitions.

radarr:
  settings:
    custom_formats:
      delete_unmanaged: true
      definitions:
        # Import custom formats from TRaSH-Guides.
        remaster:
          trash_id: 570bc9ebecd92723d2d21500f4be314c
          # `default_score` is 25, as set in the TRaSH-Guides custom format.
        4k-remaster:
          trash_id: eca37840c13c6ef2dd0262b141a5482f
          default_score: 26  # Override default score from TRaSH-Guides custom format.
        # Manually define custom formats.
        br-disk:
          default_score: -10000
          conditions:
            br-disk:
              type: quality-modifier
              modifier: BRDISK
              negate: false
              required: false
        3d:
          # No `default_score` defined on manually defined custom format: default to 0.
          conditions:
            bluray-3d:
              type: release-title
              regex: '\\b(BluRay3D)\\b'
              negate: false
              required: false

The following attributes determine how custom formats are managed by Buildarr.

delete_unmanaged: bool = False class-attribute instance-attribute #

Automatically delete custom formats not defined in Buildarr.

definitions: Dict[str, CustomFormat] = {} class-attribute instance-attribute #

Define download clients under this attribute.

Quality Profiles#

When using custom formats in quality profiles, they are assigned a score value to configure how releases are prioritised.

radarr:
  settings:
    profiles:
      quality_profiles:
        definitions:
          HD:
            upgrades_allowed: true
            upgrade_until_quality: Bluray-1080p
            qualities:
              - Bluray-1080p
              - name: WEB 1080p
                members:
                  - WEBDL-1080p
                  - WEBRip-1080p
            minimum_custom_format_score: 0
            upgrade_until_custom_format_score: 10000
            custom_formats:
              # Wanted
              - name: remaster  # No `score` defined: Use `default_score` from the custom format.
              - name: 4k-remaster
              # Unwanted
              - name: br-disk
              - name: 3d
                score: -10000  # Inverse of maximum allowed score, to ensure it is never selected.
            language: english

For more information on how to use custom formats to filter and prioritise media in Buildarr, check the Quality Profiles documentation.

Importing from TRaSH-Guides#

TRaSH-Guides contains a large collection of pre-made custom formats, to make it easier for new users to get started with configuring Radarr correctly.

Buildarr makes it even easier by providing a convenient way to automatically import these custom formats, using the trash_id attribute.

Simply create a custom format with any desired name, set the corresponding trash_id attribute, and Buildarr will take care of everything.

Using Buildarr daemon, these custom formats are also kept automatically up to date whenever they are changed in the guides, eliminating the need to manually check and update your configuration.

...
  custom_formats:
    delete_unmanaged: true
    definitions:
      # Import custom formats from TRaSH-Guides.
      remaster:
        trash_id: 570bc9ebecd92723d2d21500f4be314c
        # `default_score` is 25, as set in the TRaSH-Guides custom format.
      4k-remaster:
        trash_id: eca37840c13c6ef2dd0262b141a5482f
        default_score: 26  # Override default score from TRaSH-Guides custom format.

When using only the trash_id parameter, Buildarr will set the default score and all conditions using sane defaults from TRaSH-Guides.

However, all aspects of a TRaSH-Guides imported custom format can be overridden using the same parameters as available in manually defining custom formats. When overriding conditions, make sure to use the same name for the condition as in the TRaSH-Guides definition.

trash_id: Optional[TrashID] = None class-attribute instance-attribute #

Trash ID of the TRaSH-Guides custom format profile to load default values from.

If there is an update in the profile, the custom format conditions will be updated accordingly.

If a condition that is explicitly defined on this custom format in Buildarr has the same name as a condition in the TRaSH-Guides profile, the explicitly defined condition takes precedence.

Manual Definitions#

If the pre-made custom formats available online are not sufficient for your needs, you can define a custom format completely manually in Buildarr, using the following syntax.

...
  custom_formats:
    delete_unmanaged: true
    definitions:
      br-disk:
        default_score: -10000
        conditions:
          br-disk:
            type: quality-modifier
            modifier: BRDISK
            negate: false
            required: false
      3d:
        # No `default_score` defined on manually defined custom format: default to 0.
        include_when_renaming: true  # Set to false by default.
        delete_unmanaged_conditions: false  # Set to true by default, and should be most of the time.
        conditions:
          bluray-3d:
            type: release-title
            regex: '\\b(BluRay3D)\\b'
            negate: false
            required: false
default_score: Optional[int] = None class-attribute instance-attribute #

The default score assigned to this custom format when it is assigned to a quality profile.

If this attribute is explicitly defined on the custom format, the defined value will always be used as the default score.

If default_score is not defined, the default value used by Buildarr depends on the type of custom format:

  • If this is a custom format imported from a Trash ID, this will default to the default score TRaSH-Guides has assigned this custom format (trash_scores.default in the metadata). If the custom format does not have a default score defined, the default score will be 0.
  • If this is a manually defined custom format, the default score will be 0.
include_when_renaming: bool = False class-attribute instance-attribute #

Make the custom format available in the {Custom Formats} template when renaming media titles.

delete_unmanaged_conditions: bool = True class-attribute instance-attribute #

Delete conditions defined on this custom format on the remote instance not managed by Buildarr.

It is recommended to keep this option enabled, particularly for custom formats imported from TRaSH-Guides.

conditions: Dict[str, Annotated[ConditionType, Field(discriminator='type')]] = {} class-attribute instance-attribute #

A list of conditions that will cause the custom format to be applied to a release if matches are found.

By default, only one of the defined conditions need to match for the custom format to be applied. If one or more conditions have required set to true, those conditions must all match in order for the custom format to be applied.

The following sections document the custom format condition types available for use in Buildarr.

Edition#

Custom format condition for matching based on media edition.

...
  custom_formats:
    definitions:
      edition:
        default_score: 0
        conditions:
          extended-edition:
            type: edition
            regex: '(?<!^|{)\\b(extended|uncut|directors|special|unrated|uncensored|cut|version|edition)(\\b|\\d)'
            negate: false
            required: false
type: Literal['edition'] = 'edition' class-attribute instance-attribute #

Buildarr type keyword associated with this condition type.

regex: NonEmptyStr instance-attribute #

The regular expression to use to match editions to the custom format.

Regular expression matching is case-insensitive.

negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.

Indexer Flag#

Custom format condition for matching based on indexer flags.

...
  custom_formats:
    definitions:
      indexer-flags:
        default_score: 0
        conditions:
          freeleech:
            type: indexer-flag
            flag: g-freeleech
            negate: false
            required: false
type: Literal['indexer-flag', 'indexer_flag', 'indexerflag'] = 'indexer-flag' class-attribute instance-attribute #

Buildarr type keywords associated with this condition type.

flag: NonEmptyStr instance-attribute #

The indexer flag to match against.

All values supported by your Radarr instance version can be defined. As of Radarr v4.7.5, the following flags are available:

  • g-freeleech
  • g-halfleech
  • g-doubleupload
  • ptp-golden
  • ptp-approved
  • hdb-internal
  • ahd-internal
  • g-scene
  • g-freeleech75
  • g-freeleech25
  • ahd-userrelease
negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.

Language#

Custom format condition for matching based on language.

...
  custom_formats:
    definitions:
      english:
        default_score: 20
        conditions:
          english:
            type: language
            language: english
            negate: false
            required: false
      japanese:
        default_score: 10
        conditions:
          japanese:
            type: language
            language: japanese
            negate: false
            required: false
      portuguese:
        default_score: 0
        conditions:
          portuguese:
            type: language
            language: portuguese
            negate: false
            required: false
          portuguese-brazil:
            type: language
            language: portuguese-brazil
            negate: false
            required: false
type: Literal['language'] = 'language' class-attribute instance-attribute #

Buildarr type keyword associated with this condition type.

language: NonEmptyStr instance-attribute #

The language to match against, written in English.

Use the any keyword to match any language. Use the original keyword to match for the original language of the media.

All languages supported by your Radarr instance version can be defined in this condition.

Examples:

  • english
  • portuguese-brazil
negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.

Quality Modifier#

Custom format condition for matching based on quality modifiers.

...
  custom_formats:
    definitions:
      br-disk:
        default_score: -10000
        conditions:
          br-disk:
            type: quality-modifier
            modifier: BRDISK
            negate: false
            required: false
type: Literal['quality-modifier', 'quality_modifier', 'qualitymodifier', 'quality'] = 'quality-modifier' class-attribute instance-attribute #

Buildarr type keywords associated with this condition type.

modifier: UpperCaseNonEmptyStr instance-attribute #

The modifier to match against.

All values supported by your Radarr instance version can be defined. As of Radarr v4.7.5, the following modifiers are available:

  • NONE
  • REGIONAL
  • SCREENER
  • RAWHD
  • BRDISK
  • REMUX
negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.

Release Group#

Custom format condition for matching based on release group.

...
  custom_formats:
    definitions:
      release-groups:
        default_score: 1800
        conditions:
          chotab:
            type: release-group
            regex: '^(Chotab)$'
            negate: false
            required: false
          ctrlhd:
            type: release-group
            regex: '^(CtrlHD)$'
            negate: false
            required: false
type: Literal['release-group', 'release_group', 'releasegroup'] = 'release-group' class-attribute instance-attribute #

Buildarr type keywords associated with this condition type.

regex: NonEmptyStr instance-attribute #

The regular expression to use to match release groups to the custom format.

Regular expression matching is case-insensitive.

negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.

Release Title#

Custom format condition for matching based on release title contents.

...
  custom_formats:
    definitions:
      anime-groups:
        default_score: 500
        conditions:
          asakura:
            type: release-title
            regex: '\\[Asakura\\]|-Asakura\\b'
            negate: false
            required: false
          tenshi:
            type: release-title
            regex: '\\[tenshi\\]|-tenshi\\b'
            negate: false
            required: false
type: Literal['release-title', 'release_title', 'releasetitle'] = 'release-title' class-attribute instance-attribute #

Buildarr type keywords associated with this condition type.

regex: Optional[str] = None class-attribute instance-attribute #

The regular expression to use to match release titles to the custom format.

Regular expression matching is case-insensitive.

negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.

Resolution#

Custom format condition for matching based on media resolution.

...
  custom_formats:
    definitions:
      1080p:
        default_score: 1000
        conditions:
          chotab:
            type: resolution
            resolution: r1080p
            negate: false
            required: false
      4k:
        default_score: -10000
        conditions:
          ctrlhd:
            type: resoltuion
            resolution: r2160p
            negate: false
            required: false
type: Literal['resolution'] = 'resolution' class-attribute instance-attribute #

Buildarr type keyword associated with this condition type.

resolution: LowerCaseNonEmptyStr instance-attribute #

The resolution to match against.

All values supported by your Radarr instance version can be defined. As of Radarr v4.7.5, the following resolutions are available:

  • r360p (360p)
  • r480p (480p)
  • r576p (576p)
  • r720p (720p)
  • r1080p (1080p HD)
  • r2160p (2160p Ultra-HD)
negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.

Size#

Custom format condition for matching based on media file size.

...
  custom_formats:
    definitions:
      allowed-size:
        default_score: 1000
        conditions:
          allowed-size:
            type: size
            min: 10  # GB
            max: 20  # GB
            negate: false
            required: false
type: Literal['size'] = 'size' class-attribute instance-attribute #

Buildarr type keyword associated with this condition type.

min: int = Field(0, ge=0) class-attribute instance-attribute #

The minimum size, in gigabytes (GB).

In order to match, the media must be larger than this size.

max: int = Field(1, ge=1) class-attribute instance-attribute #

The maximum size, in gigabytes (GB).

In order to match, the media must be smaller than, or equal to, this size.

negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.

Source#

Custom format condition for matching based on media source type.

...
  custom_formats:
    definitions:
      allowed-sources:
        default_score: 0
        conditions:
          blu-ray:
            type: source
            source: BLURAY
            negate: false
            required: true
type: Literal['source'] = 'source' class-attribute instance-attribute #

Buildarr type keyword associated with this condition type.

source: UpperCaseNonEmptyStr instance-attribute #

The source type to match against.

All values supported by your Radarr instance version can be defined. As of Radarr v4.7.5, the following source types are available:

  • UNKNOWN
  • CAM
  • TELESYNC
  • TELECINE
  • WORKPRINT
  • DVD
  • TV
  • WEBDL
  • WEBRIP
  • BLURAY
negate: bool = False class-attribute instance-attribute #

When set to true, negates the condition on the custom format.

If a condition with this field set to true matches, the custom format will not apply to the media.

required: bool = False class-attribute instance-attribute #

When set to true, this condition must match in order for the custom format to apply to media.

If this field is false on all conditions in a custom format, it will apply if any one of the defined conditions match.