Release Profiles#

Release profiles are used to select releases to download that best fit the criteria for what you want to retrieve for your media library.

Since not all releases are created equal, and each release group has their own way of packaging and encoding their material, being able to dial-in what Sonarr selects is important to getting good results.

sonarr:
  settings:
    profiles:
      release_profiles:
        definitions:
          Example:
            must_contain:
              - '\.*\.mkv$/i'
            must_not_contain:
              - '-FAKEGROUP'
            preferred:
              - term: '/\b(amzn|amazon)\b(?=[ ._-]web[ ._-]?(dl|rip)\b)/i'
                score: 100
              - term: '/(-BRiNK|-CHX|-GHOSTS|-EVO|)\b/i'
                score: -10000
          Release Sources (Streaming Service):
            trash_id: 1B018E0C53EC825085DD911102E2CA36
          P2P Groups + Repack/Proper:
            trash_id: 71899E6C303A07AF0E4746EFF9873532

In Buildarr, release profiles are defined using a dictonary structure. Each profile has either a set of filters determining the kind of releases that should be prioritised (or ignored), or a reference to an external provider of pre-made release profiles like TRaSH-Guides.

For more information on release profiles, refer to this page on WikiArr.

General configuration#

Configuration parameters for controlling how Buildarr handles release profiles.

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

Automatically delete release profiles not defined in Buildarr.

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

Define release profiles to configure on Sonarr here.

If there are no release profiles defined and delete_unmanaged is False, Buildarr will not modify existing release profiles, but if delete_unmanaged is True, Buildarr will delete all existing profiles. Be careful when using delete_unmanaged.

Creating a release profile#

Release profiles are defined in Sonarr like this.

sonarr:
  settings:
    profiles:
      release_profiles:
        definitions:
          Example:
            must_contain:
              - '\.*\.mkv$/i'
            must_not_contain:
              - '-FAKEGROUP'
            preferred:
              - term: '/\b(amzn|amazon)\b(?=[ ._-]web[ ._-]?(dl|rip)\b)/i'
                score: 100
              - term: '/(-BRiNK|-CHX|-GHOSTS|-EVO|)\b/i'
                score: -10000

The below attributes are common to all release profiles.

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

Enable the release profile in Sonarr.

If set to False, the release profile will be uploaded to Sonarr, but inactive.

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

Add preferred words to the file name as {Preferred Words} when doing automatic renaming in Sonarr.

indexer: Optional[NonEmptyStr] = None class-attribute instance-attribute #

When set to None or an empty string, use any available indexer.

tags: Set[NonEmptyStr] = set() class-attribute instance-attribute #

A list of one or more strings representing tags that will be applied to this release profile.

All tags on an existing release profile (if present) are removed and replaced with only the tags in this list.

If an empty list is explicitly defined, no tags will be set on the release profile, and any existing tags (if present) are removed.

Manually defining filters#

When not importing release profiles from external sources like TRaSH-Guides, settings for how to prefer and ignore releases must be defined within the release profile using the following parameters.

must_contain: Set[NonEmptyStr] = set() class-attribute instance-attribute #

A list of terms to mark as "Must Contain" in Sonarr.

The release will be rejected if it does not contain one or more of terms (case insensitive) or regular expressions.

must_not_contain: Set[NonEmptyStr] = set() class-attribute instance-attribute #

A list of terms to mark as "Must Not Contain" in Sonarr.

The release will be rejected if it contains one or more of terms (case insensitive) or regular expressions.

preferred: List[PreferredWord] = [] class-attribute instance-attribute #

Assign a score to terms (or a regular expression patterns) found in the file name of a release, and prefer it or not prefer it depending on the result of comparing a release file name against all terms.

...
  release_profiles:
    Example:
      preferred:
        - term: "/(amzn|amazon)(?=[ ._-]web[ ._-]?(dl|rip))/i"
          score: 100
        - term: "/(-BRiNK|-CHX|-GHOSTS|-EVO|)/i"
          score: -10000

The release will be preferred based on each term's score. Positive scores will be more preferred, and negative scores will be less preferred.

Importing release profiles from TRaSH-Guides#

TRaSH-Guides maintains a list of release profiles for a variety of use cases.

Buildarr supports downloading these release profiles from the TRaSH-Guides metadata repository, and pushing the latest changes to Sonarr directly, without having to manually input them.

sonarr:
  settings:
    profiles:
      release_profiles:
        definitions:
          Release Sources (Streaming Service):
            trash_id: 1B018E0C53EC825085DD911102E2CA36
          P2P Groups + Repack/Proper:
            trash_id: 71899E6C303A07AF0E4746EFF9873532

When using imported release profiles, the filters within the release profile itself cannot be modified, but there are some customisation options that alter how Buildarr interprets them. These are identical to the customisation options for release profiles provided by Recyclarr.

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

The trash ID of the release profile to import from TRaSH-Guides metadata.

If not specified, Buildarr assumes the release profile filters are manually defined.

filter: TrashFilter = TrashFilter() class-attribute instance-attribute #

Defines various ways that release profile terms from the guide are synchronised with Sonarr. These terms have individual trash IDs, and using this filter allows you to pick and choose which parts of the release profile you want to use.

...
  release_profiles:
    definitions:
      Optionals:
        trash_id: 76e060895c5b8a765c310933da0a5357
        filter:
          include:
            - ea83f4740cec4df8112f3d6dd7c82751 # Prefer Season Packs
            - cec8880b847dd5d31d29167ee0112b57 # Ignore 720p/1080p HEVC (Golden Rule)
            # All the other preferred words in the 'Optionals' profile
            # are ignored.

The attributes include and exclude are mutually exclusive. If both are defined, include is used.

include: List[TrashID] = [] class-attribute instance-attribute #

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.

exclude: List[TrashID] = [] class-attribute instance-attribute #

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.

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

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 Contain" section of the uploaded release profile.

TRaSH-Guides release profile import examples#

Here are some examples of importing well used release profiles from TRaSH-Guides.

Release Profile RegEx (WEB-DL)#
sonarr:
  settings:
    profiles:
      release_profiles:
        definitions:
          Release Sources (Streaming Service):
            trash_id: 1B018E0C53EC825085DD911102E2CA36
          P2P Groups + Repack/Proper:
            trash_id: 71899E6C303A07AF0E4746EFF9873532
          Low Quality Groups:
            trash_id: EBC725268D687D588A20CBC5F97E538B
          Optionals:
            trash_id: 76e060895c5b8a765c310933da0a5357
            filter:
              include:
                - ea83f4740cec4df8112f3d6dd7c82751 # Prefer Season Packs
                - 6f2aefa61342a63387f2a90489e90790 # Dislike renamed/retagged releases
                - 19cd5ecc0a24bf493a75e80a51974cdd # Dislike retagged/obfuscated groups
                - 6a7b462c6caee4a991a9d8aa38ce2405 # Dislike release ending: en
                - 236a3626a07cacf5692c73cc947bc280 # Dislike release containing: 1-
                - cec8880b847dd5d31d29167ee0112b57 # Ignore 720p/1080p HEVC re-encodes (Golden Rule)
                - 436f5a7d08fbf02ba25cb5e5dfe98e55 # Ignore Dolby Vision without HDR10 fallback
                - f3f0f3691c6a1988d4a02963e69d11f2 # Ignore The Group -SCENE
                - 5bc23c3a055a1a5d8bbe4fb49d80e0cb # Ignore so-called scene releases
                - 538bad00ee6f8aced8e0db5218b8484c # Ignore Bad Dual Audio Groups
                - 4861d8238f9234606df6721df6e27deb # Ignore AV1
Release Profile RegEx (Anime)#
sonarr:
  settings:
    profiles:
      release_profiles:
        definitions:
          Anime Profile 1:
            #   * Prefer uncensored
            #   * Prefer Multi-Audio or Dual-Audio
            # https://trash-guides.info/Sonarr/Sonarr-Release-Profile-RegEx-Anime/#first-release-profile
            trash_id: d428eda85af1df8904b4bbe4fc2f537c
            strict_negative_scores: true
          Anime Profile 2:
            # Prioritise/ignore releases based on group.
            # You may need to adjust the profile based on actual results.
            # https://trash-guides.info/Sonarr/Sonarr-Release-Profile-RegEx-Anime/#second-release-profile
            trash_id: 6cd9e10bb5bb4c63d2d7cd3279924c7b
            strict_negative_scores: true