- If the `metadata.json` and `metadata.schema.json` needs changes, announce it first in the Discord `#development` channel and ping `voidpointer` and `nitsua` so the 3rd party apps don't break :bangbang:
- Tiers only hold release groups that have at least done several dozen objectively high-quality releases or are added for a specific reason. (If they do mainly niche stuff and/or foreign stuff, they won't be added)
- All Tier Groups must use retail sources. Fanres and upscaled groups are forbidden. This is due to the high effort required and the near impossibility of systematically guaranteeing quality without manually checking every single movie.
-`trash_scores` - JSON object of [score(s) for the Custom Format](#scoring). Note that Custom Formats with Default Scores of 0 should NOT have a `trash_scores.default`
- STARRJSONEXPORT - The exported custom format created within Starr. Note that this will have a leading `{` that will need to have the trash-specific regex added after it.
- When adding the hashcode for **Radarr**, use the following naming convention: `CF_name` e.g., the Custom Format `BR-DISK` would be the hash of [`BR-DISK`](https://md5.gromweb.com/?string=BR-DISK)
When adding the hashcode for **Radarr Anime**, use the following naming convention: `Radarr Anime CF_name`. For example, the Custom Format `BR-DISK` would be the hash of [`Radarr Anime BR-DISK`](https://md5.gromweb.com/?string=Radarr+Anime+BR-DISK).
- When adding the hashcode for **Sonarr**, use the following naming convention: `Sonarr CF_name` e.g. the Custom Format `BR-DISK` would be the hash of [`Sonarr BR-DISK`](https://md5.gromweb.com/?string=Sonarr+BR-DISK).
- When adding the hashcode for **Sonarr Anime**, use the following naming convention: `Sonarr Anime CF_name` e.g. the Custom Format `BR-DISK` would be the hash of [`Sonarr Anime BR-DISK`](https://md5.gromweb.com/?string=Sonarr+Anime+BR-DISK).
> When creating a new quality profile or editing an existing one, it's mandatory to ensure that these settings are updated/added to the following locations for the third-party sync apps.
> Use one of the existing quality-profiles.json files as your base.
- JSON file name - use the name of the quality profile that you used in the `"name":' in the JSON
> [!CAUTION]
> JSON file names are always written in lowercase, spaces are replaced by a dash, and no spaces or special characters except a dash :bangbang:
-`trash_id` - Generated [HashCode](#hashcode) for the profile name you used for the `"name":' in the JSON
-`name` - Quality Profile name.
- If the profile is for a foreign language, start with `[Language]` => example: `[German] HD Bluray + WEB`.
- If the profile is for anime, start with `[Anime]` => example: `[Anime] Something`.
-`trash_description` - Description of what the quality profile covers => example: `Quality Profile that covers:<br>- WEBDL: 1080p<br>- Bluray: 720p, 1080p`
- The following HTML code is allowed in the description: `<b>`, `</b>`, `<br>` and `<a href="link-here" target="_blank">text-here</a>`.
-`group` — Sort order to ensure the quality profiles stay together. The default public guide will always be the first.
- [1-9] English/International Public Guides (None Anime).
- [11-19] German Guides (Incl. Anime).
- [21-29] French Guides (Incl. Anime).
- [81-89] English/International Public Guides (Anime).
- [91-99] Restricted Use.
-`upgradeAllowed` - Upgrades Allowed.
-`cutoff` - Upgrade Until.
-`minFormatScore` - Minimum Custom Format Score.
-`cutoffFormatScore` - Upgrade Until Custom Format Score.
-`minUpgradeFormatScore` - Minimum Custom Format Score Increment.
-`language` - Language. **(This is only for Radarr)**
-`items` - Qualities. => The allowed quality sources are in reverse order, meaning that the highest quality allowed in your profile is at the bottom of the list.
-`formatItems` - Custom Formats. => The mandatory Custom Formats that are needed for this quality profiles, excluding the ones that are added with the [cf-groups](cf-groups)
Depending on the chosen profile, the end user gets a selection of groups where certain groups are enabled by default with certain Custom Formats or some groups holding Custom Formats that the end user can choose if they want to have it enabled or disabled.
> Use one of the existing cf-groups.json files as an example.
#### Group Specific settings
> [!note]
>
> - All Groups are optional and by default disabled. The user can enable or disable the group (If the CF should always be enabled, put it in the [quality profile](#quality-profiles-explanation))
> - If you want the group to be enabled by default, add `"default": "true",` above `"custom_formats": [`. (If the group does not have to be enabled by default, there is no need to add `"default": "false",`)
- JSON file name - use the name of the quality profile that you used in the `"name":' in the JSON
> [!CAUTION]
> JSON file names are always written in lowercase, spaces are replaced by a dash, and no spaces or special characters except a dash :bangbang:
-`trash_id` - Generated [HashCode](#hashcode) for the group name you used for the `"name":' in the JSON
-`name` - Group name.
- If the group is for a foreign language, start with `[Language]` => example: `[German] HD Bluray + WEB`.
- If the group is for anime, start with `[Anime]` => example: `[Anime] Something`.
-`trash_description` - Description of what the group covers => example: `Collection of UK Streaming Services for Radarr`
- The following HTML code is allowed in the description: `<b>`, `</b>`, `<br>` and `<a href="link-here" target="_blank">text-here</a>`.
-`default": "true"` - [**OPTIONAL**] If you want the group to be enabled by default.
#### Group Custom Format specific settings
> [!note]
>
> - `required: true` => If the group is enabled, all the CF in that group are enabled, but the end user can still disable the full group (no individual choosing possible).
> - `required: false` => If the group is enabled, the end user can choose which CF he wants to be added individually, and they are not checked by default.
> - `default: true`/`required: false` => If the group is enabled, the end user can choose which CF he wants to be added individually, and they are checked by default.
-`pip` is also required, but it should come with Python. Run `pip --version` to check if it's available and working. See the [installation instructions](https://pip.pypa.io/en/stable/installation/).
Alternatively, you can check out the docker container and instructions maintained by [zakkarry](https://github.com/zakkarry) specifically for developing the guides [here](https://gist.github.com/zakkarry/1305f713539c9fee22bdeeddcff3a263). The documentation in the README explains the installation process.
Then, you can install dependent modules using the command below. This command should be run in the repository's root directory (i.e., where the `requirements.txt` file is). If the `pip` command does
If it doesn't work, please check the mkdocs installation page linked in the Prerequisite section above.