Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/TRaSH-Guides/Guides into …
Browse files Browse the repository at this point in the history
…chore/guide-add-QPs-for-the-3rd-party-sync-apps
  • Loading branch information
TRaSH- committed Jan 31, 2025
2 parents 0dbcfdb + f36ec7b commit 95091db
Show file tree
Hide file tree
Showing 177 changed files with 4,871 additions and 472 deletions.
20 changes: 11 additions & 9 deletions .github/ISSUE_TEMPLATE/bug-error-found-in-the-guide-.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Bug/Error Found in the Guide?
description: Support Requests will be closed, if you are unsure please check out the Discord server first.
description: Do not open an issue on GitHub for support questions. Any support questions will be closed. If you are unsure, please check out the discord server first.
title: "[Bug]"
labels: ["Type: Bug", "Status: Triage Needed"]
body:
Expand All @@ -14,23 +14,25 @@ body:
- label: Bazarr
- label: Downloaders/Deluge
- label: Downloaders/NZBGet
- label: Downloaders/Other
- label: Downloaders/Qbittorrent
- label: Downloaders/ruTorrent
- label: Downloaders/SABnzbd
- label: Downloaders/Other
- label: File and Folder Structure (aka Hardlinks)
- label: File and Folder Structure (aka Hardlinks)/Docker
- label: File and Folder Structure (aka Hardlinks)/Dockstarter
- label: File and Folder Structure (aka Hardlinks)/Native
- label: File and Folder Structure (aka Hardlinks)/Synology
- label: File and Folder Structure (aka Hardlinks)/TrueNAS-Core
- label: File and Folder Structure (aka Hardlinks)/Unraid
- label: File and Folder Structure (aka Hardlinks)/Windows
- label: Guide-Sync
- label: Hardlinks/Docker
- label: Hardlinks/Dockstarter
- label: Hardlinks/Native
- label: Hardlinks/Synology
- label: Hardlinks/TrueNAS-Core
- label: Hardlinks/Unraid
- label: Misc
- label: Other
- label: Plex
- label: Prowlarr
- label: Radarr
- label: Sonarr
- label: Other
validations:
required: true
- type: textarea
Expand Down
9 changes: 6 additions & 3 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ blank_issues_enabled: false
contact_links:
- name: Guides
url: https://trash-guides.info/
about: Guides mainly for Sonarr/Radarr/Bazarr and everything related to it.
about: Guides mainly for the Starr Apps (Sonarr/Radarr) and everything related to them.
- name: Discord Support
url: https://discord.gg/Vau8dZ3
about: Ask questions and any other related help
url: https://trash-guides.info/discord
about: If you have any questions about the guide or need assistance, please join our Discord server.
- name: Would you happen to have any suggestions for the guide?
url: https://discord.com/channels/492590071455940612/1021029470389403818
about: Join the suggestions section of our Discord server.
19 changes: 0 additions & 19 deletions .github/ISSUE_TEMPLATE/request-a-guide.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/pr-naming-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ jobs:
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const titleRegex = /^(Revert \")?(feat|fix|docs|style|refactor|perf|test|update|build|ci|chore)(\([\w\/-]+\))?:\s.+$/g;
const titleRegex = /^(Revert \")?(((feat|fix|chore)\((((radarr|sonarr|starr)(-(german|french|anime))?)|(prowlarr|lidarr|bazarr|hardlinks|downloaders|plex|guide(-sync)?|misc|glossary|gha))\))|(docs|style|refactor|perf|test|update|build|ci)(\([\w\/-]+\))?):\s.+$/;
const title = context.payload.pull_request.title;
const isValid = titleRegex.test(title);
if (!isValid) {
if ((context.payload.action === 'opened') || (context.payload.action === 'reopened')) {
const prNumber = context.payload.pull_request.number;
const author = context.payload.pull_request.user.login;
const message = `@${author} your pull request title "${context.payload.pull_request.title}" does not conform to our [naming conventions](https://www.conventionalcommits.org/en/v1.0.0/).\n\nPlease update the title to match the pattern: "feat|build|chore|style|fix|update|ci(\\<area\\>): \\<description\\>\n\nYou can check your title at this [regex101 link](https://regex101.com/r/jOZ6kU/1)."`;
const message = `@${author} your pull request title "${context.payload.pull_request.title}" does not conform to our [naming conventions](https://www.conventionalcommits.org/en/v1.0.0/).\n\nPlease update the title to match the pattern: "feat|build|chore|style|fix|update|ci(\\<area\\>): \\<description\\>\n\nYou can check your title at this [regex101 link](https://regex101.com/r/StPfFi/2)."`;
github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
Expand Down
147 changes: 102 additions & 45 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,66 +8,107 @@ These are mostly guidelines, not rules. Use your best judgment, and feel free to
## Guidelines

- Make sure you're editing the latest version.
- If you propose changes make sure it doesn't break anything else in the Guides.
- Make sure that after the changes you don't get any [markdownlint](https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md) errors
- If you propose changes, ensure they don't break anything else in the guides.
- Make sure that after the changes, you don't get any [markdownlint](https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md) errors
- 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:

## Branch naming

We're trying to be as consistent as possible for automation of the changelog.
> [!IMPORTANT]
> We're trying to be as consistent as possible because of the automation of the changelog.
- **feat/xxx** Commits, that adds a new feature
- **fix/xxx** Commits, that fixes a bug/issue
- **style/xxx** Commits, that do not affect the meaning (white-space, formatting, missing semi-colons, etc)
- **chore/xxx** Miscellaneous commits (administrative / cleanup / backend)
- **feat/xxx** Commits that adds a new feature
- **fix/xxx** Commits that fixes a bug/issue
- **style/xxx** Commits that do not affect the meaning (white-space, formatting, missing semi-colons, grammar, etc.)
- **chore/xxx** Miscellaneous commits (administrative, cleanup, backend, etc)

Where 'xxx' can stand for Starr/Sonarr/Radarr/Guide etc
> [!note]
> Where `xxx` can stand for the main [Guide Categories](#guide-categories) in the guide.
_Examples:_

- `feat/Starr-ELEANOR-to-Scene-CF`
- `feat/Radarr-CiNEPHiLES-to-Remux-Tier-02`
- `feat/maintenance`
- `fix/dv-hdr10-cf-should-match-dv-hdr10+`

[Source](https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13#types)
- `feat/radarr-CiNEPHiLES-to-Remux-Tier-02`
- `style/radarr minor-grammar corrections`
- `fix/starr-dv-hdr10-cf-should-match-dv-hdr10+`

## Pull Request naming

We're trying to be as consistent as possible for automation of the changelog.
> [!IMPORTANT]
> Because the changelog is created automatically, we want to make the PR name as clear and consistent as possible.
- **feat(xxx):** Commits, that adds a new feature
- **fix(xxx):** Commits, that fixes a bug/issue
- **style(xxx):** Commits, that do not affect the meaning (white-space, formatting, missing semi-colons, etc)
- **chore(xxx):** Miscellaneous commits (administrative / cleanup / backend)
The PR naming consists of 3 parts.

Where 'xxx' can stand for Starr/Sonarr/Radarr/Guide etc

_Examples:_
part1(part2): part3 => type(guide category): short detailed descriptions

- `feat(starr): add ELEANOR to Scene CF`
- `feat(radarr): add CiNEPHiLES to Remux Tier 02`
- `feat(maintenance): various changes to the Starr CFs`
- `fix(starr): DV HDR10 CF should match DV HDR10+`
### Types

[Source](https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13#types)

- **feat(xxx):** Commits that adds a new feature
- **fix(xxx):** Commits that fixes a bug/issue
- **style(xxx):** Commits that do not affect the meaning (white-space, formatting, missing semi-colons, grammar, etc)
- **chore(xxx):** Miscellaneous commits (administrative, cleanup, backend, etc)

> [!note]
> Where `xxx` can stand for the main [Guide Categories](#guide-categories) in the guide.
### Guide categories

The following Guide categories can be used for the PR name.

```yml
- type(radarr): #Radarr related
- type(radarr-german): #Radarr related but for the German guides
- type(radarr-french): #Radarr related but for the French guides
- type(radarr-anime): #Radarr related but for the Anime guides
- type(sonarr): #Sonarr related
- type(sonarr-german): #Sonarr related but for the German guides
- type(sonarr-french): #Sonarr related but for the French guides
- type(sonarr-anime): #Sonarr related but for the Anime guides
- type(starr): #Sonarr and Radarr related
- type(starr-german): #Sonarr and Radarr related but for the German guides
- type(starr-french): #Sonarr and Radarr related but for the French guides
- type(starr-anime): #Sonarr and Radarr related but for the Anime guides
- type(prowlarr): #Prowlarr related
- type(lidarr): #Lidarr related
- type(bazarr): #Bazarr related
- type(hardlinks): #Hardlinks/File and Folder Structure related
- type(downloaders): #Downloaders related
- type(plex): #Plex related
- type(guide-sync): # Officially supported third-party party Guide Sync Tools related
- type(misc): #Miscellaneous guides that do not fit in any other categories but are still related to Radarr/Sonarr, etc
- type(glossary): #Any additions/changes to the glossary page
```
_Examples:_
- feat(guide-sync): Add more groups to give the user more personal options
- feat(guide-sync): Add new Quality Profiles for Radarr/Sonarr
- feat(starr): [NEW Guide] How does the current rank logic work
- feat(downloaders): [NZBGet] Updated the guide to reflect the recent changes with v24.5
## When doing a PR that is WIP
When doing a PR that is in progress and not yet complete/ready for review or not yet done fully, please ensure it is a **DRAFT Pull Request**
> [!TIP]
> When doing a PR that is in progress and not yet complete/ready for review or not yet done fully, please ensure it is a **DRAFT Pull Request**
## Radarr/Sonarr Custom Format (JSON)
### Release Group Reclassifications, Removals, or Additions
- When adding a release group to a Custom Format for whatever reason, please add in the PR why it's added/removed/moved.
> [!WARNING]
> **When adding a release group to a Custom Format, please explain why it's added/removed/moved in the PR.**
### General Guidelines
- Custom Format name needs to match JSON name :bangbang:
- No hashcode can exist multiple times :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 guaranteeing quality systematically without manually checking every single movie.
> [!CAUTION]
>
> - Custom Format name needs to match JSON name :bangbang:
> - No hashcode can exist multiple times :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.
- JSON file format shall consist of the following TRaSH-specific data appended to the JSON exported from Starr
```json
Expand All @@ -84,22 +125,23 @@ STARRJSONEXPORT

General Structure

- JSON file name - name of the [json file](#file-naming)
- JSON file name - the name of the [json file](#file-naming)
- `trash_id` - Generated [HashCode](#hashcode) for the Custom Format
- `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`
- `trash_regex` - Link to [regex test cases](#regex-test-cases) for regex
- 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.

### File Naming

- JSON file names are always written in lowercase, spaces are replaced by a dash, and no spaces or special characters except a dash :bangbang:
> [!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:
### Hashcode

- When adding the hashcode for **Radarr** use the following naming `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 `Radarr Anime CF_name` e.g. 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 `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 `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 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).

### Regex Test Cases

Expand All @@ -111,7 +153,7 @@ When adding a regex test case:
- Replace the actual Series name/title with `Series`.
- Replace the actual group name with `RlsGrp`

When updating or adding a new CF the test case URL (`trash_regex`) needs to be prepended to the exported from Starr JSON
When updating or adding a new CF, the test case URL (`trash_regex`) needs to be prepended to the exported from Starr JSON

```json
{
Expand All @@ -133,14 +175,30 @@ When updating or adding a new CF the test case URL (`trash_regex`) needs to be p
```

- This allows for Custom Formats to be assigned different scores for different profiles
- Default Scores of 0 (e.g. as in `trash_scores.default`) are FORBIDDEN
- Default Scores of 0 (e.g., as in `trash_scores.default`) are FORBIDDEN

## YAML file naming

- If a hashcode is needed **No** hashcode can exist multiple times :bangbang:
> [!CAUTION]
>
> - If a hashcode is needed **No** hashcode can exist multiple times :bangbang:
>
- Use [this website](https://md5.gromweb.com) to generate an md5 hash
- YAML file names are always written in small letters, spaces are replaced by a dash, and no spaces or special characters except a dash :bangbang:

## Quality Profiles and 3rd party sync apps

> [!IMPORTANT]
> 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.
- Radarr: `docs/json/radarr/quality-profiles`
- `docs/json/radarr/cf-groups`
- Sonarr: `docs/json/sonarr/quality-profiles`
- `docs/json/Sonarr/cf-groups`

- `docs/json/xxxarr/quality-profiles` = The base quality profile with all the mandatory Custom Formats.
- `docs/json/xxxarr/cf-groups` = The optional/User choices that wouldn't break the Quality Profile.

## Recommendations

Use [VSCode](https://code.visualstudio.com/) for editing. VS Code should recommend extensions to you
Expand All @@ -153,11 +211,11 @@ based on the `.vscode/extensions.json` file; you should install all of them.
These prerequisites are taken from the [mkdocs installation instructions][mkdocinstall].

- Install a recent version of [Python 3](https://www.python.org/).
- `pip` is also required, but 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/).
- `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/).

[mkdocinstall]: https://www.mkdocs.org/user-guide/installation/

Alternatively you can check out the docker container and instructions maintained by [zakkarry](https://github.com/zakkarry) specifically for development of the guides [here](https://gist.github.com/zakkarry/1305f713539c9fee22bdeeddcff3a263). The documentation in the README explains the installation process.
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.

### Mkdocs Installation

Expand All @@ -167,9 +225,8 @@ First, install mkdocs:
pip install mkdocs
```

Then, install dependent modules using the command below. This command should be run in the root
directory of the repository (i.e. where the `requirements.txt` file is). If the `pip` command does
not work, refer to the mkdocs installation page linked in the Prerequisite section above.
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.

```bash
pip install -r docs/requirements.txt
Expand Down
Loading

0 comments on commit 95091db

Please sign in to comment.