diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ebaee2c10..f1c21c320 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,6 +30,7 @@ Here you will find guidelines for contributing to [TRaSH Guides](https://trash-g - [cf-groups](#cf-groups) - [Group Specific settings](#group-specific-settings) - [Group Custom Format specific settings](#group-custom-format-specific-settings) + - [quality-profile-groups](#quality-profile-groups) - [Recommendations](#recommendations) - [Preview Docs Locally](#preview-docs-locally) - [Preview after Pull Request](#preview-after-pull-request) @@ -308,6 +309,34 @@ The cf-group.json exists of two properties. - `quality_profiles` - `exclude` - Add the Quality Profiles you want to exclude from this group, using the quality-profiles `name` and `trash_id`. +### quality-profile-groups + +Quality profile groups organize quality profiles into logical categories for easier discovery and selection. + +- Radarr: `docs/json/radarr/quality-profile-groups/groups.json` +- Sonarr: `docs/json/sonarr/quality-profile-groups/groups.json` + +The `groups.json` file contains an array of groups. The order of groups determines display order, and profiles within each group are sorted alphabetically by their name. + +```json +[ + { + "name": "Standard", + "profiles": ["trash_id_1", "trash_id_2"] + }, + { + "name": "Anime", + "profiles": ["trash_id_3"] + } +] +``` + +- `name` - Display name for the profile group +- `profiles` - Array of quality profile `trash_id` values belonging to this group + +> [!IMPORTANT] +> All `trash_id` values in the `profiles` array must correspond to existing quality profiles in the `quality-profiles` directory. Each quality profile should belong to exactly one group. + --- ## Recommendations diff --git a/docs/json/radarr/quality-profile-groups/groups.json b/docs/json/radarr/quality-profile-groups/groups.json new file mode 100644 index 000000000..6ae037368 --- /dev/null +++ b/docs/json/radarr/quality-profile-groups/groups.json @@ -0,0 +1,52 @@ +[ + { + "name": "Standard", + "profiles": { + "hd-bluray-web": "d1d67249d3890e49bc12e275d989a7e9", + "remux-web-1080p": "9ca12ea80aa55ef916e3751f4b874151", + "remux-2160p-combined": "d1d310673359205736b4b84acd5ea8c8", + "remux-2160p-alternative": "dd3cd75deb9645bae838d1c5da6388d5", + "remux-web-2160p": "fd161a61e3ab826d3a22d53f935696dd", + "uhd-bluray-web": "64fb5f9858489bdac2af690e27c8f42f" + } + }, + { + "name": "Anime", + "profiles": { + "anime-remux-1080p": "722b624f9af1e492284c4bc842153a38" + } + }, + { + "name": "French", + "profiles": { + "french-multi-vo-hd-bluray-web": "2572ce3ea4eef1c19d59e0e20ed1cea7", + "french-multi-vo-hd-remux-web": "c6460a102b312200c095a2d0982e0461", + "french-multi-vo-uhd-bluray-web": "92ead7022d13a7858d54e328e6a2f8f9", + "french-multi-vo-uhd-remux-web": "1fef28c8c919f31cd86283b1baf527d4" + } + }, + { + "name": "German", + "profiles": { + "german-hd-bluray-web": "2b90e905c99490edc7c7a5787443748b", + "german-hd-remux-web": "c13c33fdd2c306266b34cb9946de5919", + "german-uhd-bluray-web": "27cc3d153c0a799fd139ef1ff4c4cc42", + "german-uhd-bluray-web-alternative": "425da1ba30711b55d2eb371437ec98d7", + "german-uhd-remux-web": "79faa9943cef2f510b997b1f2a9f3ea6" + } + }, + { + "name": "SQP", + "profiles": { + "sqp-1-1080p": "0896c29d74de619df168d23b98104b22", + "sqp-1-2160p": "5128baeb2b081b72126bc8482b2a86a0", + "sqp-1-web-1080p": "90a3370d2d30cbaf08d9c23b856a12c8", + "sqp-1-web-2160p": "e91c9adaca0231493f4af0d571b907f9", + "sqp-2": "c3933358ba2356bafc41524f81471069", + "sqp-3": "2cf36c1f0106ffac993be003ade51865", + "sqp-3-audio": "0ada8e60cc3ddf2733b65de10f4a6c72", + "sqp-4": "013f89e6da27519fe56cf482702a2db9", + "sqp-5": "a7bb1539fd147256b21b1098f3dc2016" + } + } +] diff --git a/docs/json/sonarr/quality-profile-groups/groups.json b/docs/json/sonarr/quality-profile-groups/groups.json new file mode 100644 index 000000000..b8daed8e3 --- /dev/null +++ b/docs/json/sonarr/quality-profile-groups/groups.json @@ -0,0 +1,35 @@ +[ + { + "name": "Standard", + "profiles": { + "web-1080p": "72dae194fc92bf828f32cde7744e51a1", + "web-1080p-alternative": "9d142234e45d6143785ac55f5a9e8dc9", + "web-2160p-combined": "c4cadd6b35b95f62c3d47a408e53e2f7", + "web-2160p": "d1498e7d189fbe6c7110ceaabb7473e6", + "web-2160p-alternative": "dfa5eaae7894077ad6449169b6eb03e0" + } + }, + { + "name": "Anime", + "profiles": { + "anime-remux-1080p": "20e0fc959f1f1704bed501f23bdae76f" + } + }, + { + "name": "French", + "profiles": { + "french-multi-vo-bluray-web-1080p": "4c48f506c1116a3a57ae33f12346bd15", + "french-multi-vo-bluray-web-2160p": "6fa7364373e8f06206871d9c20a4fb3e" + } + }, + { + "name": "German", + "profiles": { + "german-hd-bluray-web": "dca7e5e9e99c703bcbdaaa471dd40e98", + "german-hd-remux-web": "0dd5f085ed61a1e01f6d347779dfa1bc", + "german-uhd-bluray-web": "3b0fa37fddaaefc931b75f2889d4b4f5", + "german-uhd-bluray-web-alternative": "7324309a7d1e10dc0dc2cea6c70ed852", + "german-uhd-remux-web": "08cececf1840290f6fd490b7d79e8642" + } + } +] diff --git a/metadata.json b/metadata.json index c038e7dab..d7f1be626 100644 --- a/metadata.json +++ b/metadata.json @@ -6,14 +6,16 @@ "qualities": ["docs/json/radarr/quality-size"], "naming": ["docs/json/radarr/naming"], "quality_profiles": ["docs/json/radarr/quality-profiles"], - "custom_format_groups": ["docs/json/radarr/cf-groups"] + "custom_format_groups": ["docs/json/radarr/cf-groups"], + "quality_profile_groups": ["docs/json/radarr/quality-profile-groups"] }, "sonarr": { "custom_formats": ["docs/json/sonarr/cf"], "qualities": ["docs/json/sonarr/quality-size"], "naming": ["docs/json/sonarr/naming"], "quality_profiles": ["docs/json/sonarr/quality-profiles"], - "custom_format_groups": ["docs/json/sonarr/cf-groups"] + "custom_format_groups": ["docs/json/sonarr/cf-groups"], + "quality_profile_groups": ["docs/json/sonarr/quality-profile-groups"] } } } diff --git a/metadata.schema.json b/metadata.schema.json index 23d4141b4..b077ab3cc 100644 --- a/metadata.schema.json +++ b/metadata.schema.json @@ -27,7 +27,8 @@ "qualities": { "$ref": "#/$defs/paths_object" }, "naming": { "$ref": "#/$defs/paths_object" }, "quality_profiles": { "$ref": "#/$defs/paths_object" }, - "custom_format_groups": { "$ref": "#/$defs/paths_object" } + "custom_format_groups": { "$ref": "#/$defs/paths_object" }, + "quality_profile_groups": { "$ref": "#/$defs/paths_object" } } }, "sonarr": { @@ -38,7 +39,8 @@ "qualities": { "$ref": "#/$defs/paths_object" }, "naming": { "$ref": "#/$defs/paths_object" }, "quality_profiles": { "$ref": "#/$defs/paths_object" }, - "custom_format_groups": { "$ref": "#/$defs/paths_object" } + "custom_format_groups": { "$ref": "#/$defs/paths_object" }, + "quality_profile_groups": { "$ref": "#/$defs/paths_object" } } } } diff --git a/schemas/profile-groups.schema.json b/schemas/profile-groups.schema.json new file mode 100644 index 000000000..2fede349c --- /dev/null +++ b/schemas/profile-groups.schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/TRaSH-/Guides/master/schemas/profile-groups.schema.json", + "title": "Quality Profile Groups Schema", + "description": "Schema for grouping quality profiles into logical categories. Order of groups determines display order.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["name", "profiles"], + "properties": { + "name": { + "type": "string", + "minLength": 1, + "description": "Display name for the profile group" + }, + "profiles": { + "type": "array", + "description": "List of quality profile trash_ids that belong to this group", + "items": { + "type": "string", + "pattern": "^[a-fA-F0-9]{32}$" + }, + "minItems": 1, + "uniqueItems": true + } + } + }, + "minItems": 1 +}