Merge branch 'master' into editorconfig

pull/1410/head
FonduemangVI 2 months ago committed by GitHub
commit 3c2ae2107e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,93 +0,0 @@
# Contributing Guidelines
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
Here you will find a set of guidelines for contributing to TRaSH Guides, Which you can find [HERE](https://trash-guides.info/),
These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
## 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 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.
- **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)
Where 'xxx' can stand for Starr/Sonarr/Radarr/Guide etc
*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){:target="_blank" rel="noopener noreferrer"}
## Pull Request naming
We're trying to be as consistent as possible for 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)
Where 'xxx' can stand for Starr/Sonarr/Radarr/Guide etc
*Examples:*
`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+`
[Source](https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13#types){:target="_blank" rel="noopener noreferrer"}
## 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**
## Radarr/Sonarr Custom Format (JSON)
- Custom Format name needs to match json name :bangbang:
- No hashcode can exists multiple times :bangbang:
- JSON file names are always written in small letters, spaces are replaced by a dash, no spaces or special characters except a dash :bangbang:
- When adding the hashcode for Radarr use the following naming `CF_name` on the following [link+example](https://md5.gromweb.com/?string=BR-DISK){:target="_blank" rel="noopener noreferrer"}.
- When adding the hashcode for Radarr Anime use the following naming `Radarr Anime CF_name` on the following [link+example](https://md5.gromweb.com/?string=Radarr+Anime+BR-DISK){:target="_blank" rel="noopener noreferrer"}.
- When adding the hashcode for Sonarr use the following naming `Sonarr CF_name` on the following [link+example](https://md5.gromweb.com/?string=Sonarr+BR-DISK){:target="_blank" rel="noopener noreferrer"}.
- When adding the hashcode for Sonarr Anime use the following naming `Sonarr Anime CF_name` on the following [link+example](https://md5.gromweb.com/?string=Sonarr+Anime+BR-DISK){:target="_blank" rel="noopener noreferrer"}.
- Provide a link to your regex example of your Custom Format using the following [Template](https://regex101.com/r/4DypIW/1){:target="_blank" rel="noopener noreferrer"}.
- When adding a RlsGrp to a Custom Format for whatever reason, please add in the PR why it's added/removed/moved.
When adding a regex test case
- Replace the actual movie name with `Movie`.
- Replace the actual series name with `Series`.
- Remove the actual Series title.
- Replace the actual group name with `RlsGrp`
When updating or adding a new CF the test case url needs to be added to the json.
```json
{
"trash_id": "hashcode",
"trash_score": "score",
"trash_regex": "https://regex101.com/r/pADWJD/5",
"name": "CF_name",
```
## YAML file naming
- If a hashcode is needed **No** hashcode can exist multiple times :bangbang:
- YAML file names are always written in small letters, spaces are replaced by a dash, no spaces or special characters except a dash :bangbang:
## Recommendations
- use [VSCode](https://code.visualstudio.com/){:target="_blank" rel="noopener noreferrer"} for editing with the following extension [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint){:target="_blank" rel="noopener noreferrer"}

@ -1,5 +1,5 @@
name: Request a Guide
description: Request a Guide here
description: Request a Guide here (This is only for new Guide requests, not for changes to existing guides, custom formats etc, if you are unsure please check out the Discord server first.)
title: "[Request]"
labels: ["Type: Guide Request", "Status: Triage Needed"]
body:

@ -10,13 +10,13 @@
## Open Questions and Pre-Merge TODOs
<!-- - [ ] Use GitHub checklists. When solved, check the box and explain the answer.
<!-- - [ ] Use GitHub checklists. When solved, check the box and explain the answer. -->
<!-- ## Learning
If you're adding a new Custom Format, make sure you follow the [Radarr/Sonarr Custom Format (JSON) Guidelines](https://github.com/TRaSH-Guides/Guides/blob/master/.github/CONTRIBUTING.md). -->
If you're adding a new Custom Format, make sure you follow the [Radarr/Sonarr Custom Format (JSON) Guidelines](https://github.com/TRaSH-Guides/Guides/blob/master/CONTRIBUTING.md). -->
## Requirements
- [ ] These changes meet the standards for [contributing](https://github.com/TRaSH-Guides/Guides/blob/master/.github/CONTRIBUTING.md).
- [ ] These changes meet the standards for [contributing](https://github.com/TRaSH-Guides/Guides/blob/master/CONTRIBUTING.md).
- [ ] I have read the [code of conduct](https://github.com/TRaSH-Guides/Guides/blob/master/.github/CODE_OF_CONDUCT.md).

@ -1,47 +1,39 @@
"Area: Backend":
- all:
- "docs/**/*.md"
- "!docs/bazarr/**"
- "!docs/downloaders/**"
- "!docs/plex/**"
- "!docs/prowlarr/**"
- "!docs/radarr/**"
- "!docs/recyclarr-configs/**"
- "!docs/sonarr/**"
"Area: Bazarr":
- docs/bazarr/**
- changed-files:
- any-glob-to-any-file: ['docs/Bazarr/**']
"Area: Dependencies":
- package.json
- package-lock.json
- changed-files:
- any-glob-to-any-file: ['package.json', 'package-lock.json']
"Area: Downloaders":
- docs/downloaders/**
- changed-files:
- any-glob-to-any-file: ['docs/Downloaders/**']
"Area: Plex":
- docs/plex/**
- changed-files:
- any-glob-to-any-file: ['docs/Plex/**']
"Area: Prowlarr":
- docs/prowlarr/**
- changed-files:
- any-glob-to-any-file: ['docs/Prowlarr/**']
"Area: Radarr":
- docs/json/radarr/cf/**
- docs/json/radarr/quality-size/**
- docs/json/radarr/naming/**
- docs/radarr/**
- changed-files:
- any-glob-to-any-file: ['docs/json/radarr/cf/**', 'docs/json/radarr/quality-size/**', 'docs/json/radarr/naming/**', 'docs/Radarr/**']
"Area: Recyclarr":
- docs/recyclarr-configs/**
- changed-files:
- any-glob-to-any-file: ['docs/recyclarr-configs/**']
"Area: Sonarr":
- docs/json/sonarr/rp/**
- docs/json/sonarr/cf/**
- docs/json/sonarr/quality-size/**
- docs/json/sonarr/naming/**
- docs/sonarr/**
- changed-files:
- any-glob-to-any-file: ['docs/json/sonarr/rp/**', 'docs/json/sonarr/cf/**', 'docs/json/sonarr/quality-size/**', 'docs/json/sonarr/naming/**', 'docs/Sonarr/**']
"Area: Starr Custom Formats":
- docs/json/radarr/cf/**
- docs/json/sonarr/cf/**
- changed-files:
- any-glob-to-any-file: ['docs/json/radarr/cf/**', 'docs/json/sonarr/cf/**']
"Area: Starr Naming":
- docs/json/radarr/naming/**
- docs/json/sonarr/naming/**
- changed-files:
- any-glob-to-any-file: ['docs/json/radarr/naming/**', 'docs/json/sonarr/naming/**']
"Area: github_actions":
- .github/workflows/**
- .github/dependabot.yml
- .github/labeler.yml
- .github/stale.yml
- changed-files:
- any-glob-to-any-file: ['.github/workflows/**', '.github/dependabot.yml', '.github/labeler.yml', '.github/stale.yml']
"Area: python":
- "**/*.py"
- changed-files:
- any-glob-to-any-file: ['**/*.py']
"Area: Backend":
- changed-files:
- any-glob-to-any-file: ['docs/**/*.md', '!docs/Bazarr/**', '!docs/Downloaders/**', '!docs/Plex/**', '!docs/Prowlarr/**', '!docs/Radarr/**', '!docs/recyclarr-configs/**', '!docs/Sonarr/**']

@ -1,16 +1,19 @@
name: Label Conflicts
on: [push, pull_request]
on:
push:
branches:
- main
pull_request:
jobs:
triage:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Label Merge Conflicts
uses: mschilde/auto-label-merge-conflicts@master
- uses: mschilde/auto-label-merge-conflicts@master
with:
CONFLICT_LABEL_NAME: "Status: Conflicted"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

@ -1,27 +1,50 @@
name: Build and Deploy Docs
on: [push, pull_request]
on:
push:
branches:
- main
pull_request:
jobs:
build:
name: Build docs
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout repository
uses: actions/checkout@v3.5.3
- name: Set up Python
uses: actions/setup-python@v4.6.1
uses: actions/checkout@v4.1.2
with:
fetch-depth: 0
sparse-checkout: |
docs
images
includes
overrides
- name: Setup python
uses: actions/setup-python@v5.0.0
with:
python-version: 3.x
- name: Get pip cache directory
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3.3.1
uses: actions/cache@v4.0.1
with:
path: .cache
key: ${{ runner.os }}-build-${{ hashFiles('docs/requirements.txt') }}
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: pip install -r docs/requirements.txt
- name: Build documentation
run: mkdocs build
deploy:
if: github.event_name == 'push' && contains(fromJson('["refs/heads/master", "refs/heads/main"]'), github.ref)
needs: build
@ -29,20 +52,34 @@ jobs:
runs-on: ubuntu-latest
permissions:
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout repository
uses: actions/checkout@v3.5.3
uses: actions/checkout@v4.1.2
with:
fetch-depth: '0'
- name: Set up Python
uses: actions/setup-python@v4.6.1
fetch-depth: 0
sparse-checkout: |
docs
images
includes
overrides
- name: Setup python
uses: actions/setup-python@v5.0.0
with:
python-version: 3.x
- name: Get pip cache directory
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3.3.1
uses: actions/cache@v4.0.1
with:
path: .cache
key: ${{ runner.os }}-build-${{ hashFiles('docs/requirements.txt') }}
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: pip install -r docs/requirements.txt
- name: Deploy to GitHub Pages

@ -0,0 +1,17 @@
name: Do Not Merge
on:
pull_request:
types: [synchronize, opened, reopened, labeled, unlabeled]
jobs:
do-not-merge:
if: contains(github.event.*.labels.*.name, 'Do Not Merge')
name: Check Do Not Merge
runs-on: ubuntu-latest
steps:
- name: check for label
run: |
echo "Pull request is labeled as 'Do Not Merge'"
echo "This workflow fails so that the pull request cannot be merged"
exit 1

@ -1,10 +1,10 @@
name: Label Pull Requests
on:
- pull_request_target
inputs:
sync-labels: true
push:
branches:
- main
pull_request_target:
jobs:
triage:
@ -13,4 +13,6 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
- uses: actions/labeler@v5
with:
sync-labels: true

@ -1,12 +1,16 @@
name: Lint - EditorConfig
on: [push, pull_request]
on:
push:
branches:
- main
pull_request:
jobs:
editorconfig-checker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.5.3
- uses: actions/checkout@v4.1.2
- name: editorconfig-checker
run: |
docker run --rm \

@ -2,25 +2,19 @@ name: Lint - Markdown
on:
push:
paths:
- "**/*.md"
- ".markdownlint.jsonc"
branches:
- main
pull_request:
paths:
- "**/*.md"
- ".markdownlint.jsonc"
jobs:
markdownlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.5.3
- uses: actions/checkout@v4.1.2
- name: markdownlint
run: |
find "${GITHUB_WORKSPACE}" -name '*.md' -exec \
docker run --rm \
-v "${GITHUB_WORKSPACE}":"${GITHUB_WORKSPACE}" \
-v "${GITHUB_WORKSPACE}/.markdownlint.jsonc":"/config/.markdownlint.jsonc" \
docker run --rm \
-v "${GITHUB_WORKSPACE}":/data \
markdownlint/markdownlint \
-c "/config/.markdownlint.jsonc" \
{} +
-r ~MD013,~MD033,~MD034,~MD046,~MD002,~MD041 \
.

@ -2,25 +2,22 @@ name: Lint - YAML
on:
push:
paths:
- "**/*.yml"
branches:
- main
pull_request:
paths:
- "**/*.yml"
jobs:
yamllint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.5.3
- uses: actions/checkout@v4.1.2
- name: Run yamllint
run: |
find "${GITHUB_WORKSPACE}" -name '*.yml' -exec \
docker run --rm \
-v "${GITHUB_WORKSPACE}":"${GITHUB_WORKSPACE}" \
-w "${GITHUB_WORKSPACE}" \
docker run --rm \
-v "${GITHUB_WORKSPACE}":/yaml \
peterdavehello/yamllint \
yamllint -c yamllint.yml \
{} +
yamllint \
-c "/yaml/yamllint.yml" \
.

@ -2,6 +2,8 @@ name: Validate Metadata JSON
on:
push:
branches:
- main
paths:
- metadata.json
- metadata.schema.json
@ -17,8 +19,8 @@ jobs:
runs-on: ubuntu-latest
name: Validate metadata.json
steps:
- uses: actions/checkout@v3.5.3
- uses: actions/setup-python@v4.6.1
- uses: actions/checkout@v4.1.2
- uses: actions/setup-python@v5.0.0
with:
python-version: 3.x
- run: pip install jsonschema

1
.gitignore vendored

@ -1,6 +1,7 @@
.cache
venv/
mkdocs-dev-server.bat
site/
/docs/Notifiarr/preview.bat
/docs/Notifiarr/Integrations/_TEMPLATE.md
/includes/flowcharts/.$radarr-flowchart.drawio.bkp

@ -1,8 +0,0 @@
{
"default": true,
"MD013": false,
"MD033": false,
"MD024": false,
"MD028": false,
"MD046": fenced
}

@ -0,0 +1,16 @@
{
"recommendations": [
"aaron-bond.better-comments",
"streetsidesoftware.code-spell-checker",
"editorconfig.editorconfig",
"dbaeumer.vscode-eslint",
"eamodio.gitlens",
"oderwat.indent-rainbow",
"yzhang.markdown-all-in-one",
"davidanson.vscode-markdownlint",
"christian-kohler.path-intellisense",
"esbenp.prettier-vscode",
"redhat.vscode-xml",
"redhat.vscode-yaml"
]
}

@ -0,0 +1,8 @@
{
"files.associations": {
".pages": "yaml"
},
"yaml.schemas": {
"https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json": "untitled:Untitled-1"
}
}

@ -0,0 +1,184 @@
# Contributing Guidelines
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
Here you will find a set of guidelines for contributing to [TRaSH Guides](https://trash-guides.info/),
These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
## 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 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.
- **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)
Where 'xxx' can stand for Starr/Sonarr/Radarr/Guide etc
*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)
## Pull Request naming
We're trying to be as consistent as possible for 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)
Where 'xxx' can stand for Starr/Sonarr/Radarr/Guide etc
*Examples:*
- `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+`
[Source](https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13#types)
## 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**
## Radarr/Sonarr Custom Format (JSON)
### Release Group Reclassifications, Removals, or Additions
- When adding a RlsGrp to a Custom Format for whatever reason, please add in the PR why it's added/removed/moved.
### General Guidelines
- Custom Format name needs to match json name :bangbang:
- No hashcode can exists multiple times :bangbang:
- Tiers only hold release groups that have atleast 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. Fanrest and upscaled groups are forbidden. This is due to the high effort required and near impossibility to guarantee quality systematically without manual check every single movie.
- JSON file format shall consist of the following TRaSH specific data appended to the json exported from Starr
```json
{
"trash_id": "HASHCODE",
"trash_scores": {
"default": 50,
"some_other_profile": 100
},
"trash_regex": "https://regex101.com/r/pADWJD/5",
STARRJSONEXPORT
}
```
General Structure
- json file name - 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
### File Naming
- JSON file names are always written in small letters, spaces are replaced by a dash, 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).
### Regex Test Cases
- Provide a link to your regex example of your Custom Format using the following [Template](https://regex101.com/r/4DypIW/1).
When adding a regex test case:
- Replace the actual movie name with `Movie`.
- 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
```json
{
"trash_regex": "https://regex101.com/r/pADWJD/5",
}
```
### Scoring
- Scores must be added as JSON objects under `trash_scores`, for example:
```json
{
"trash_scores": {
"default": 50,
"some_other_profile": 100
},
}
```
- 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
## YAML file naming
- 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, no spaces or special characters except a dash :bangbang:
## Recommendations
Use [VSCode](https://code.visualstudio.com/) for editing. VS Code should recommend extensions to you
based on the `.vscode/extensions.json` file; you should install all of them.
## Preview Docs Locally
### Prerequisites
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 its available
and working. See the [installation instructions](https://pip.pypa.io/en/stable/installation/).
[mkdocinstall]: https://www.mkdocs.org/user-guide/installation/
### Mkdocs Installation
First, install mkdocs:
```bash
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.
```bash
pip install -r docs/requirements.txt
```
Once everything is installed, run the command below to start a local dev server to preview your
changes to mkdocs:
```bash
mkdocs serve
```

@ -3,7 +3,7 @@
!!! note ""
Here you will find a collection of Scripts you can use with Bazarr.
Most of them are provided by other users, if you got a script you want to share don't hesitate to create a [PR](https://github.com/TRaSH-Guides/Guides/blob/master/.github/CONTRIBUTING.md) for it
Most of them are provided by other users, if you got a script you want to share don't hesitate to create a [PR](https://github.com/TRaSH-Guides/Guides/blob/master/CONTRIBUTING.md) for it
## 2 to 3 language code

@ -0,0 +1,6 @@
nav:
- Installing: index.md
- Basic-Setup: Basic-Setup.md
- Using Labels: Using-Labels.md
- Port forwarding: Port-Forwarding.md
- Tips

@ -0,0 +1,196 @@
# Basic-Setup
{! include-markdown "../../../includes/downloaders/basic-setup.md" !}
<!-- --8<-- "includes/downloaders/basic-setup.md" -->
------
!!! Note
Settings that aren't covered means you can change them to your liking or just leave them on default.
------
## Accessing your settings
`Edit` => `Preferences` will bring up your option window once you have launched Deluge for the first time.
## Downloads
Once you are here, you can edit your download settings in the `Downloads` section.
![!Download Settings](images/Deluge-download-settings.png)
### Download Path
`Download to` is where you want you want Deluge to download your media. If you want to move your files upon completion - check the box and enter a path for that option as well.
### Saving .torrent Copies
Copy (and delete upon removal) of the .torrent file upon completion.
!!! success ""
**Suggested: `Personal preference`**
### Pre-allocated Files
Pre-allocate disk space for the added torrents. This limits fragmentation and also makes sure if you use a cache drive or a feeder disk, that the space is available.
!!! success ""
**Suggested: `Enabled`**
!!! warning
Do not set Pre-allocated disk space if you are using ZFS as your filesystem as ZFS [does not support fallocate](https://github.com/openzfs/zfs/issues/326){:target="_blank" rel="noopener noreferrer"}
{! include-markdown "../../../includes/downloaders/warning-path-location.md" !}
------
## Bandwidth
Here you can set your rate limits, meaning your maximum download/upload/connections.
!!! info
In Deluge, the value of `-1` is used for "infinity" or "unlimited".
![!Bandwidth Settings](images/Deluge-bandwidth-settings.png)
The best settings depend on many factors.
- Your ISP speed.
- Your hardware.
- Bandwidth needed by other services in your home network.
!!! success ""
**Suggested:** `For a home connection that you use with others it's best practice to set the upload/download rate to about 70-80% of your maximum upload/download speed.`
## Global Bandwidth Limits
These are the client-wide settings, they will apply to the total traffic of all torrents.
![!Global Bandwidth Settings](images/Deluge-globalbw-settings.png)
!!! tip
The only thing you NEED to place a limit on is half-open connections and connections per second.
For most high-speed broadband connections ~100-150 seems ideal. If you experience lag when initiating a download, try lowering these values.
### Per-Torrent Limits
In addition to global limits, you can set limits per torrent.
!!! info
If you only wish to apply global limits, set all of these to `-1`.
![!Per-Torrent Bandwidth Settings](images/Deluge-torrentbw-settings.png)
------
## Queue
These settings are intended to manage your number of active seeds, downloads, and uploads.
!!! info
In Deluge, the value of `-1` is used for "infinity" or "unlimited".
### Active Torrents
![!Queue Settings](images/Deluge-queue-settings.png)
Unless you have a specific reason, `Total` can be set to `-1`. These are torrents seen as seeding by the tracker.
`Seeding` is the number of active torrents uploading, and `Downloading` is the number of concurrently downloading torrents.
### Seeding Rotation & Share Ratio
I recommend using the seeding goals in your Starr Apps indexer settings (enable advanced) to remove completed downloads. These sections are then not necessary.
------
## Network
This is where you will bind Deluge to a specific interface/address, specify port usage, and disable network protocols.
![!Network Settings](images/Deluge-network-settings.png)
### Incoming Port
!!! info ""
You've followed the [Setup TorGuard for port forwarding](/Misc/How-to-setup-Torguard-for-port-forwarding/){:target="_blank" rel="noopener noreferrer"} and want to know where in your download client you should add the port you've port forwarded.
`Incoming Port` should be set to a specific port that you have opened/forwarded (if you are behind any NAT/Firewall/VPN.)
!!! WARNING
Default ports of 6880-6890 are not recommended.
Make sure you click `Test Active Port` and get a ✓ before moving on.
!!! success ""
**Suggested: `Critical`**
### Encryption
Encryption should be enabled on both `Incoming` and `Outgoing`. The default `Level` of `Either` will accept both encrypted and standard connections.
!!! success ""
**Suggested: `Level = Full Stream`**
### Network Extras
You can configure your network protocols in this section. Depending on which type of tracker you use, some of these will be beneficial while on other trackers (private) it will put you at risk of being banned/disabled.
!!! warning
Please read this section carefully.
1. UPnP and NAT-PMP should be both disabled in your router, as well as in Deluge, as they can pose security risks.
![!Network UPNP](images/Deluge-network-extras-upnp.png)
!!! success ""
**Suggested: `Disabled`**
1. Public trackers can benefit from having settings like DHT (Distributed Hash Table) and Peer Exchange (PEX) enabled. These protocols rely on sources besides the trackers to get peers. **The following settings are recommended ONLY for public trackers.**
![!Network Extras (Public)](images/Deluge-network-extras-public.png)
!!! success ""
**Suggested: `Recommended`**
1. Decent private trackers will use the "private flag" and ignore these settings by default. However, it is strongly recommended that you use the following settings if you use private trackers. Almost all private trackers have rules stating that you must disable DHT, PEX, and LSD/LPD (Local Peer Discovery). Failing to do so puts your account at risk of being disabled.
![!Network Extras (Public)](images/Deluge-network-extras.png)
!!! success ""
**Suggested: `Disabled`**
------
## Plugins
Finally, you will want to enable some plugins. There are plenty of plugins on the Deluge community forums to browse once you are familiar with the client, but for the time being, we will only be covering the `WebUI` and `Label` plugins to get started.
![!Plugin Settings](images/Deluge-plugin-settings.png)
!!! tip
If you are familiar with the client and plugins you can find more information [here](./Tips/Plugins.md)
!!! info
If you are running a docker container, such as binhex's image, the `WebUI` plugin may not need to be enabled. Instead, it may be configured in the container.
### WebUI
Once you have enabled the `WebUI` plugin, it will appear in your `Preferences` menu list, and you will need to enable the web interface and set the port you want the WebUI to listen on.
!!! info
The default WebUI password is `deluge` and you can change that in preferences inside the WebUI once you access it through your browser.
Remember your password, we will need this later.
### Label
The `Label` plugin will allow you to categorize/sort your torrents. You can assign one Label per torrent. Starr apps can also use Deluge's labels to help them keep track of downloads and imported torrents.
Labels are a valuable tool, if used properly, to keep your torrents managed and organized.
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->

@ -1,13 +0,0 @@
# Deluge - Basic Setup
{! include-markdown "../../../includes/downloaders/basic-setup.md" !}
<!-- --8<-- "includes/downloaders/basic-setup.md" -->
------
## Soon
I've asked several people that used this download client for some help/feedback, but most of them just switched to qBittorrent.
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->

@ -1,3 +0,0 @@
# Deluge - How to add labels
Placeholder

@ -0,0 +1,23 @@
# Port Forwarding
The `Network` section of `Preferences` is where you will bind Deluge to a specific interface/address, and specify port usage.
![!Network Settings](images/Deluge-port-forwarding.png)
## Incoming Port
!!! info ""
You've followed the [Setup TorGuard for port forwarding](/Misc/How-to-setup-Torguard-for-port-forwarding/){:target="_blank" rel="noopener noreferrer"} and want to know where in your download client you should add the port you've forwarded.
`Incoming Port` should be set to a specific port that you have opened/forwarded (if you are behind any NAT/Firewall/VPN.)
!!! WARNING
Default ports of 6880-6890 are not recommended.
Make sure you click `Test Active Port` and get a ✓ before moving on.
!!! success ""
**Suggested: `Critical`**
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->

@ -0,0 +1,110 @@
# Plugins
Here you will find a list of included and available plugins that may be useful. These are not required but should be seen as ways to advance/customize your setup once you understand the client and its behaviors.
!!! info
All plugins are .egg files, these files will need to be placed inside your deluge config/data directory, inside the `plugins` folder. If you are using a thin client, they will also need to be present on your local instance as well.
!!! tip
Links to the plugins below are directly to the latest versions available on Deluge's forums, see the original and subsequent posts for more information concerning the plugin's features and iterations.
---
## AutoAdd
Use this plugin as a "Watch" directory for .torrent files, you can customize the settings using the `Edit` button for that specific directory (download directory, label, etc).
Place a .torrent file in a watched folder, and Deluge will add the torrent to your client. Make sure your directory is marked with a checkmark under `Active` if you wish it to be monitored.
---
## AddTorrentCheck
This plugin is used to continuously update the tracker when adding torrents from IRC (think autodl-irssi or autobrr) before they are registered.
See the forum thread for details below.
[AddTorrentCheck](https://forum.deluge-torrent.org/viewtopic.php?p=236070#p236070){:target="\_blank" rel="noopener noreferrer"}
---
## Blocklist
This plugin has mixed reception, depending on the use case. For private trackers, it is generally recommended to keep it disabled. There is an argument that some benefits, in privacy/security, could be made for public trackers - however, reports of many false positives and actual TRACKERS being flagged/blocked have been reported.
Use at your own discretion.
---
## Execute
Execute will run a program or script upon reaching a specified event. It is recommended that after adding events, you restart Deluge.
!!! info
Checking or Rechecking a torrent will not trigger the "Torrent Completed" event, you will need to actually download the torrent to trigger this.
---
## Stats
Stats does exactly what it sounds like; provides you with statistics on torrent traffic. You can find the latest version on the forums, but depending on which version of Deluge you install an older version may be included.
[Stats](https://forum.deluge-torrent.org/viewtopic.php?p=236443#p236443){:target="\_blank" rel="noopener noreferrer"}
---
## YaRSS2
YaRSS2 should be considered unsupported/abandoned at this point. This plugin will crash your client after a random amount of time.
There is not currently any active development on the project, as far as I'm aware.
There is currently no viable RSS support natively in Deluge.
---
## AutoRemovePlus
This is one of the forks of the original AutoRemovePlus (also referred to as ARP) which will automatically remove torrents from your client:
- Select how many torrents are allowed at the same time.
- Choose to remove or pause them based on multiple criteria age, seeders, seed time or ratio.
- Set specific removal rules depending on the tracker or LabelPlus label.
- Remove only torrents from specific trackers or LabelPlus labels.
- Only remove torrents if under a certain HDD space threshold.
- Select if torrents have to fulfill both or either criteria.
- Delete torrents in order (e.g. delete torrents with the highest ratio first).
- Don't remove torrents if they don't reach a minimum time (in days) or ratio.
- Choose the removal interval.
- Right-click and select torrents that you don't want automatically removed.
- Remove the torrent data option.
- Create an exempted tracker or LabelPlus label list, so that torrents that belong to those trackers or labels are not removed.
- Fully functional WebUI.
Other forks, and the original plugin, can be found on the GitHub page.
[AutoRemovePlus](https://github.com/laur89/deluge-autoremoveplus){:target="\_blank" rel="noopener noreferrer"}
---
## ltConfig
If you need to set libtorrent settings to anything other than their defaults, this is the plugin for you. There are presets, but you can fine-tune the settings as you need as well.
!!! ATTENTION
There is a known bug when trying to enable settings in ltConfig, double-clicking will sometimes not "check" the option.
Simply click the option, then use the space bar to enable that checkbox.
!!! tips
If you want to seed over 1600 torrents, you will need this plugin. You will need to increase the active_tracker_limit.
If your tracker's SSL certificate has expired, you can disable validate_https_trackers to bypass validation.
See the forum thread for details below.
[ltConfig](https://forum.deluge-torrent.org/viewtopic.php?p=235653#p235653){:target="\_blank" rel="noopener noreferrer"}
{! include-markdown "../../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->

@ -0,0 +1,54 @@
# Thin Client
## Daemon
If you are already running Deluge in `daemon` or `console` mode, or running via Docker, this is usually enabled by default. You will need to check your compose or core.conf for the "daemon_port" if you do not know it.
!!! tip
You can also access the daemon settings in `Preferences` in the WebUI if you do not have access to the GTK/UI
You will need to have "Allow Remote Connections" enabled if you are not connecting to Deluge from localhost.
![!Daemon Settings](../images/Deluge-tc-daemon.png)
!!! info
If you do not have access to the WebUI, and are instead doing this by editing Deluge's `core.conf`, you will need to change "allow_remote" to true.
Restart Deluge for the changes to take effect.
------
## Switching to Thin-Client
Once your daemon is up and running, it's time to set up the client you'll be using to manage your daemon. This will usually be on a second computer, but if you wish to use Deluge with Thin-Client locally (to always seed in the background) that works as well.
Simply go to `Edit` => `Preferences` and switch from `Standalone` to `Thin Client`
![!Thin-Client Toggle](../images/Deluge-tc-settings.png)
Restart Deluge.
!!! info
You will still need to set the daemon to run at start-up.
### Connections Manager
After switching to `Thin Client` you will need to connect to your daemon. Go to `Edit` => `Connections Manager` and click on `Add` to add the daemon.
![!Label Options](../images/Deluge-tc-connman.png)
!!! ATTENTION
If you mistyped your password while adding the connection, it will prompt you to enter it. There is a bug that does not accept/save the correct password unless it is entered through the `Add`/`Edit` Menu.
If you mistype the password while you are adding the connection, go to `Edit` on the connection and retype the password into the password field.
!!! WARNING
You can find your users and passwords for the daemon in the `auth` file inside your appdata/config folder for Deluge.
You can add users in the `Daemon` settings in preferences as well.
BE AWARE: These passwords are stored in PLAIN-TEXT in your `auth` file.
{! include-markdown "../../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->

@ -0,0 +1,265 @@
# unRAID Mover and Deluge
When you make use of the unRAID cache drive for your `/data/torrents` share, and the torrents in Deluge are still seeding, the mover can't move files since they are still in use.
Using the following instructions will allow you to move the files with the use of the Deluge JSON-RPC.
!!! abstract "Workflow Rules"
1. Pause torrents in a specified age range that reside on your cache drive.
1. Run the unRAID mover.
1. Resume the torrents after the mover has completed.
!!! warning
The screenshots below are only **EXAMPLES** to show you how it should look and where you need to place the data that you need to add. They are **NOT** always a 100% reflection of the actual data, and not always the actual values you need to add.
- Always follow the recommendations described in the guide.
- If you have any questions, or aren't sure, just click the chat badge to join the Discord Channel where you can ask your questions directly.
## Needed
### `deluge-mover` script
Download the following standalone Python script.
- [Script (deluge-mover.py)](https://raw.githubusercontent.com/zakkarry/deluge-mover/master/deluge-mover.py){:target="_blank" rel="noopener noreferrer"}
Thanks to [zakary](https://github.com/zakkarry){:target="_blank" rel="noopener noreferrer"} (Developer on [cross-seed](https://github.com/cross-seed/cross-seed){:target="_blank" rel="noopener noreferrer"})
### Plugins
Install the following Plugins.
- User Scripts
- NerdTools
- python3 <sup>(*1*)</sup>
- python-setuptools <sup>(*1*)</sup>
- python-pip <sup>(*1*)</sup>
!!! info "<sup>(*1*)</sup> These need to be installed from NerdTools."
------
## Setup
After you install the needed `Plugins` - it's time to configure everything.
### `requests` module
`deluge-mover.py` needs the requests Python module, so we need to make sure it's installed when your unRAID server starts, or when the Array is started the first time.
You can choose one of the following 3 options (select a tab) to install `requests`.
=== "User scripts"
With this option, we're going to install the `requests` module when the Array is started the first time.
In your unRAID Dashboard, go to your `Settings` tab and select `User Scripts` in the `User Utilities` section at the bottom.
![!User Scripts](images/Unraid-settings-user-scripts-icon.png)
At the bottom of the `User Scripts` page select the `ADD NEW SCRIPT` button.
![!Add New Script](images/Unraid-user-scripts-add-new-script-icon.png)
A popup will appear asking you to name the script. For this example, we're going to use `Install requests (deluge-mover)` and then click on `OK`.
![!Install requests module](images/Unraid-user-scripts-add-new-script-enter-name.png)
Click on the cogwheel of the new script in the list, and select `Edit Script`.
![!Select user script](images/Unraid-settings-user-scripts-edit-requests.png)
Copy/Paste the following in the new window that opens, then click `SAVE CHANGES`.
```bash
#!/bin/bash
pip3 install requests
```
![!Bash script](images/Unraid-settings-user-scripts-requests.png)
Select in the schedule list when the script should run, and choose `At First Array Start Only`.
![!Set Run Time](images/Unraid-settings-user-scripts-requests-schedule.png)
Click on `Apply`.
Finally, you will need to choose `RUN IN BACKGROUND` or restart your unRAID server to install the `requests` module.
=== "Python venv"
With this option, we're going to create a [Python virtual environment](https://docs.python.org/3/library/venv.html) on our disk. We will use this to run and store dependencies (`requests`) for this specific environment.
By doing this, we will **only need to configure this once** and it will be persistent after reboots *(this differs from the previous steps)*.
First, you need to choose a location to start a new Python environment.
!!! info
In the next steps, you will be asked to choose a [location to store the script](#copy-script-to-your-preferred-location), try to be consistent.
Suggestions:
- `/mnt/user/appdata/deluge/scripts/.venv`
- `/mnt/user/data/scripts/.venv`
Run the following command in unRAID's terminal in the directory you chose:
```bash
python3 -m venv --clear /mnt/user/data/scripts/.venv
```
We now need to enter this new environment and install our dependency (`requests`) in it, run:
```bash
source /mnt/user/data/scripts/.venv/bin/activate
pip3 install requests
deactivate # to leave the environment
```
!!! info
Replace `/mnt/user/data/scripts/.venv` with the path you have chosen.
=== "Go File"
With this option, we're going to install the `requests` module when the unRAID server is started.
On your USB stick/key go to `/boot/config` and open the `go` file with your text editor ([VSCode](https://code.visualstudio.com/){:target="_blank" rel="noopener noreferrer"}/[Notepad++](https://notepad-plus-plus.org/downloads/){:target="_blank" rel="noopener noreferrer"}).
Copy/paste the following command
```bash
pip3 install requests
```
Restart your unRAID Server or run the above command from the terminal.
------
### Script
Now, using your favorite text editor ([VSCode](https://code.visualstudio.com/){:target="_blank" rel="noopener noreferrer"}/[Notepad++](https://notepad-plus-plus.org/downloads/){:target="_blank" rel="noopener noreferrer"}) edit the script you downloaded at the beginning of the guide ([HERE](#deluge-mover-script)).
You only need to change a few options at the top of the script.
```python
### CONFIGURATION VARIABLES ###
# this webui will need to be the JSON-RPC endpoint
# this ends with '/json'
deluge_webui = "http://localhost:8112/json"
deluge_password = "deluged"
# this changes whether the actual cache drive is checked for
# applicable files to pause/move before pausing.
#
# if this is false, it will pause all torrents in the age-range
# instead of only torrents in that range that exist on the cache
check_fs = False
# if you are using the mover tuner and don't want to use it for
# this script, set this to true
#
# if you do not use mover tuner, leave this as false
use_mover_old = False
# this is the absolute host path to your cache drive's downloads
# you only need this to be changed/set if using 'check_fs = True'
cache_download_path = "/mnt/cache/torrents/completed"
# the age range of days to look for relevant torrents to move
# i dont recommend setting age_day_max to less than the schedule
# you run the script on...
#
# if you run every 7 days, this should be at least 7 to prevent
# files from being stuck on your cache forever
#
# 0 disables age_day_max
# set both age vars to 0 to move everything on your cache drive
age_day_min = 3
age_day_max = 0
```
- `deluge_webui` => The URL you use to access Deluge locally. (*the* `"` *should remain*)
- `deluge_password` => Your Deluge WebUI `Password`. (*the* `"` *should remain*)
- `check_fs` => If set to `True`, it will check for the file on the cache drive before pausing.
- `use_mover_old` => See below.
!!! warning ""
- If you do not use `Mover Tuning`, you **DO NOT** have to make any changes.
- If you use `Mover Tuning` but **DON'T** want to use it for the script, change this to `True`
- If you use `Mover Tuning` and **DO** want to use it for the script, you will not have to make any changes. However, for this option, inside the `Mover Tuner` you will need to set `Move Now button follows plugin filters` to `Yes` and `Disable Mover running on a schedule` to `No`.
- `cache_download_path` => The location (host path) for your cache folder (if check_fs is True)
- `age_day_min` => Set the minimum age (days) of the torrents that you wish to move.
- `age_day_max` => Set the maximum age (days) of the torrents that you wish to move.
#### Copy the script to your preferred location
Place the script you just edited somewhere easy to access/remember.
Suggestions:
- `/mnt/user/appdata/deluge/scripts/deluge-mover.py`
- `/mnt/user/data/scripts/deluge-mover.py`
#### Final steps
Set up the scheduler for when the mover should run.
In your unRAID Dashboard, go to your `Settings` tab and select `User Scripts` in the `User Utilities` section at the bottom.
![!User Scripts](images/Unraid-settings-user-scripts-icon.png)
At the bottom of the `User Scripts` page select the `ADD NEW SCRIPT` button.
![!Add New Script](images/Unraid-user-scripts-add-new-script-icon.png)
A popup will appear asking you to name the script. For this example, we're going to use `deluge-mover` and then click on `OK`.
![!Deluge Mover](images/Unraid-user-scripts-add-new-script-enter-name-deluge.png)
Click on the cogwheel of the new script in the list.
![!Select user script](images/Unraid-settings-user-scripts-edit-deluge-mover.png)
Choose your method (select a tab) and copy/paste the script in the new window that opens, then click `SAVE CHANGES`.
=== "Python (Native)"
``` bash
#!/bin/bash
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "Deluge Mover" -d "Deluge Mover starting @ `date +%H:%M:%S`."
echo "executing script to pause torrents and run mover."
python3 /mnt/user/data/scripts/deluge-mover.py
echo "deluge-mover completed and resumed all paused torrents."
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "Deluge Mover" -d "Deluge Mover completed @ `date +%H:%M:%S`."
```
=== "Python (venv)"
``` bash
#!/bin/bash
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "Deluge Mover" -d "Deluge Mover starting @ `date +%H:%M:%S`."
echo "executing script to pause torrents and run mover."
/mnt/user/data/scripts/.venv/bin/python3 /mnt/user/data/scripts/deluge-mover.py
echo "deluge-mover completed and resumed all paused torrents."
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "Deluge Mover" -d "Deluge Mover completed @ `date +%H:%M:%S`."
```
!!! info
Replace `/mnt/user/data/scripts/` in the script with the path you have chosen for the Python script.
![!Bash script](images/Unraid-settings-user-scripts-deluge-mover.png)
Click the schedule dropdown to choose when the script should run. We want to select `Custom`.
![!Set Run Time](images/Unraid-settings-user-scripts-deluge-mover-schedule.png)
After changing to `Custom` you will get an extra text field on the right where you can set your schedule (cron).
For this example, we're going to tell the script to run every day at 4 AM.
`0 4 * * *`
You can generate your scheduling [HERE](https://crontab.guru/)
![!Set Run Time](images/Unraid-settings-user-scripts-deluge-mover-cron.png)
{! include-markdown "../../../../includes/support.md" !}

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 975 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@ -0,0 +1,35 @@
# Using Labels
## Labels
!!! info
Labels are the equivalent of categories for qBittorrent, and how you can manage and organize your torrents in groups. Starr apps can use labels in Deluge to keep track of downloads to monitor, rather than watching every torrent in your client.
### Managing Labels
Once you have [enabled the `Label` plugin](./Basic-Setup.md#plugins), you simply right-click anywhere in the area occupied by the label index on the pane on the left and you will be presented with a menu to add/remove/edit a label or its options.
![!Label Menu](images/Deluge-label-add.png)
### Label Options
Each label can be customized by selecting the label, right-clicking, and going to its `Label Options`. Here you can specify the bandwidth settings, download location settings, and even seed goals.
!!! info
In Deluge, the value of `-1` is used for "infinity" or "unlimited".
Below you see an example of the bandwidth options available for a specific label. These settings will be automatically applied as long as a torrent has this label.
![!Label Bandwidth](images/Deluge-label-bw.png)
If you want torrents to be moved upon completion to a specific folder, you can specify this in `Folder Options`. The torrent WILL need to finish downloading while under the label for this to happen.
![!Label Folders](images/Deluge-label-folders.png)
!!! info
Enabling a "Move completed to" for a label may require you to restart Deluge before it will take effect.
Rechecking torrents will not trigger the "completion" call.
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 785 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

@ -1,3 +1,49 @@
# Deluge Placeholder
# Installing
I've asked several people that used this download client for some help/feedback, but most of them just switched to qBittorrent.
## Introduction
Deluge is an open-source cross-platform torrent client written in Python. It has been around since 2006 and offers many features that, while niche, many consider to be critical to their setups.
------
## Installation
Information sourced mostly from [Deluge's Downloads Page](https://dev.deluge-torrent.org/wiki/Download)
### Windows
You can find the latest Windows installers [here](https://ftp.osuosl.org/pub/deluge/windows/?C=M;O=D)
!!! note
`lt2.0` in the filename means the installer includes libtorrent 2.0.x instead of the older 1.2.x
### Linux (Native)
Due to most default OS repositories being outdated, I recommend using Deluge's repositories to install the latest version.
Using `apt-get` to install
sudo add-apt-repository ppa:deluge-team/stable
sudo apt-get update
sudo apt-get install deluge
Using `pip3` to install (included in the Python package)
pip3 install deluge
!!! info
You can find this project's pip repo @ [pypi.org/project/deluge/](https://pypi.org/project/deluge/)
!!! Advanced
If you want to install deluged as a service, documentation can be found [here](https://deluge.readthedocs.io/en/latest/how-to/systemd-service.html)
### Docker Containers
[LinuxServer.io](https://hub.docker.com/r/linuxserver/deluge)
[BinHex](https://hub.docker.com/r/binhex/arch-deluge)
[BinHex VPN](https://hub.docker.com/r/binhex/arch-delugevpn)
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->

@ -48,7 +48,7 @@ fwp = re.sub('(?i)-Rakuv\.nzb$', '.nzb', fwp)
fwp = re.sub('(?i)-Scrambled\.nzb$', '.nzb', fwp)
fwp = re.sub('(?i)-WhiteRev\.nzb$', '.nzb', fwp)
fwp = re.sub('(?i)-xpost\.nzb$', '.nzb', fwp)
fwp = re.sub('(?i)\[eztv\]\.nzb$', '.nzb', fwp)
fwp = re.sub('(?i)\[eztv([ ._-]re)?\]\.nzb$', '.nzb', fwp)
fwp = re.sub('(?i)\[TGx\]\.nzb$', '.nzb', fwp)
fwp = re.sub('(?i)\[TGx\]-xpost\.nzb$', '.nzb', fwp)
fwp = re.sub('(?i)\[ettv\]\.nzb$', '.nzb', fwp)

@ -8,10 +8,12 @@
!!! Note
Settings that aren't covered means you can change them to your own liking or just leave them on default.
** I also recommend to enable the `Advanced Settings` on the top right. **
**I also recommend to enable the `Advanced Settings` on the top right.**
## General
[Sabnzbd Documentation](https://sabnzbd.org/wiki/configuration/4.0/general){:target="_blank" rel="noopener noreferrer"}
### Tuning
`Settings` => `General` => `Tuning`
@ -23,6 +25,8 @@ I recommend setting a sane maximum speed and then limiting below that, to keep y
## Folders
[Sabnzbd Documentation](https://sabnzbd.org/wiki/configuration/4.0/folders){:target="_blank" rel="noopener noreferrer"}
### User Folders
`Settings` => `Folders` => `Users Folders`
@ -44,6 +48,8 @@ I recommend the .nzb Backup Folder because sabnzbd doesn't have a hidden history
## Servers
[Sabnzbd Documentation](https://sabnzbd.org/wiki/configuration/4.0/servers){:target="_blank" rel="noopener noreferrer"}
`Settings` => `Servers` => `Add Server`
![!Servers](images/sabnzbd-servers.png)
@ -64,6 +70,8 @@ I recommend the .nzb Backup Folder because sabnzbd doesn't have a hidden history
## Categories
[Sabnzbd Documentation](https://sabnzbd.org/wiki/configuration/4.0/categories){:target="_blank" rel="noopener noreferrer"}
`Settings`=> `Categories`
Covered and fully explained in [SABnzbd - Paths and Categories](/Downloaders/SABnzbd/Paths-and-Categories/){:target="_blank" rel="noopener noreferrer"}
@ -72,6 +80,8 @@ Covered and fully explained in [SABnzbd - Paths and Categories](/Downloaders/SAB
## Switches
[Sabnzbd Documentation](https://sabnzbd.org/wiki/configuration/4.0/switches){:target="_blank" rel="noopener noreferrer"}
### Queue
`Settings` => `Switches` => `Queue`
@ -93,8 +103,7 @@ Covered and fully explained in [SABnzbd - Paths and Categories](/Downloaders/SAB
1. Unpack archives (rar, zip, 7z) within archives.
1. This can help with subs that are in folders in the rar because sonarr/radarr don't look in sub-folders.
1. Some servers provide an alternative NZB when a download fails. I have it enabled no guarantee that it works.
1. Helps with de-obfuscation, but probably is handling the same case sonarr/radarr do okay with. Not sure how this one does, I have it enabled, but its also newish.
1. When sorting, use tags from indexer for title, season, episode, etc. Otherwise all naming is derived from the NZB name.
1. Helps with de-obfuscation especially invalid file extensions
------
@ -106,8 +115,8 @@ Covered and fully explained in [SABnzbd - Paths and Categories](/Downloaders/SAB
## Special
Rarely used options. For their meaning and explanation, click on the Help button to go to the Wiki page.
Don't change these without checking the Wiki first, as some have serious side-effects.
Rarely used options.
Don't change these without checking the [SABnzbd Wiki](https://sabnzbd.org/wiki/configuration/4.0/special){:target="_blank" rel="noopener noreferrer"} first, as some have serious side-effects.
The default values are between parentheses.
### Unable to connect to SABnzbd
@ -137,7 +146,7 @@ Being that Sonarr/Radarr only looks at the last xx amount in the queue/history.
### Sonarr
??? example "Sonarr - [CLICK TO EXPAND]"
??? example "Sonarr - [Click to show/hide]"
`Settings` => `Download Clients`
@ -151,7 +160,7 @@ Being that Sonarr/Radarr only looks at the last xx amount in the queue/history.
### Radarr
??? example "Radarr - [CLICK TO EXPAND]"
??? example "Radarr - [Click to show/hide]"
`Settings` => `Download Clients`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 61 KiB

@ -20,13 +20,11 @@
import sys
import re
# normalize argv to scriptname and just first 8 arguments to maintain compatibility
sys.argv = sys.argv[:9]
try:
# Parse the 18 input variables for SABnzbd version >= 4.0.0
(scriptname, nzbname, postprocflags, category, script, prio, downloadsize, grouplist, showname, season, episodenumber, episodename, is_proper, resolution, decade, year, month, day, job_type) = sys.argv
downloadsize = int(downloadsize)
except ValueError:
# ...or 11 variables for earlier versions
(scriptname, nzbname, postprocflags, category, script, prio, downloadsize, grouplist, showname, season, episodenumber, episodename) = sys.argv
# Parse the input variables for SABnzbd version >= 4.2.0
(scriptname, nzbname, postprocflags, category, script, prio, downloadsize, grouplist) = sys.argv
except:
sys.exit(1) # exit with 1 causes SABnzbd to ignore the output of this script
@ -52,7 +50,7 @@ fwp = re.sub('(?i)-WhiteRev$', '', fwp)
fwp = re.sub('(?i)-WRTEAM$', '', fwp)
fwp = re.sub('(?i)-CAPTCHA$', '', fwp)
fwp = re.sub('(?i)-Z0iDS3N$', '', fwp)
fwp = re.sub('(?i)\[eztv\]$', '', fwp)
fwp = re.sub('(?i)\[eztv([ ._-]re)?\]$', '', fwp)
fwp = re.sub('(?i)\[TGx\]$', '', fwp)
fwp = re.sub('(?i)\[ettv\]$', '', fwp)
fwp = re.sub('(?i)\[TGx\]-xpost$', '', fwp)

@ -21,6 +21,36 @@ This is a program used to manage your qBittorrent instance such as:
------
## qBitrr
This is a program used to manage your qBittorrent instance and Arr instances
Features
- Monitor qBit for Stalled/bad entries and delete them then blacklist them on Arrs (Option to also trigger a re-search action).
- Monitor qBit for completed entries and tell the appropriate Arr instance to import it:
- `qbitrr DownloadedMoviesScan` for Radarr
- `qbitrr DownloadedEpisodesScan` for Sonarr
- Skip files in qBit entries by extension, folder or regex.
- Monitor completed folder and clean it up.
- Usage of [ffprobe](https://github.com/FFmpeg/FFmpeg){:target="_blank" rel="noopener noreferrer"} to ensure downloaded entries are valid media.
- Trigger periodic Rss Syncs on the appropriate Arr instances.
- Trigger Queue update on appropriate Arr instances.
- Search requests from [Overseerr](https://github.com/sct/overseerr){:target="_blank" rel="noopener noreferrer"} or [Ombi](https://github.com/Ombi-app/Ombi){:target="_blank" rel="noopener noreferrer"}.
- Auto add/remove trackers
- Set per tracker values
- **Sonarr v4 support**
- **Radarr v4 and v5 support**
- Monitor Arr's databases to trigger missing episode searches.
- Searches Radarr missing movies based on Minimum Availability
- Customizable searching by series or singular episodes
- Optionally searches year by year is ascending or descending order (config option available)
- Search for CF Score unmet and cancel torrents base on CF Score or Quality unmet search
[qBitrr](https://github.com/Feramance/qBitrr){:target="_blank" rel="noopener noreferrer"}
------
## qbittorrent-cli
A cli to manage qBittorrent. Add torrents, reannounce and import from other clients.

@ -1,32 +1,29 @@
# How to run the unRaid mover for qBittorent seeding torrents
# unRAID Mover and qBittorrent
When you make use of the unRaid cache drive for your `/data/torrents` share and the torrents in qBittorent are still seeding then the mover can't move files, because they are still in use.
When you make use of the unRAID cache drive for your `/data/torrents` share, and the torrents in qBittorrent are still seeding, the mover can't move files since they are still in use.
Using the following instructions you will be able to move the files with the use of the qBittorrent API.
Using the following instructions will allow you to move the files with the use of the qBittorrent API.
!!! abstract "Workflow Rules - [CLICK TO EXPAND]"
!!! abstract "Workflow Rules"
1. Pause torrents older than last x days.
1. Run the mover.
1. Resume the torrents once the mover is completed.
## Warning
!!! Danger "If you make use of the Seed Time/Ratio settings in your Indexers settings in the Starr apps[^1].<br> Make sure you're using `Post-Import Category` in your Starr apps Download clients settings.<br>Else it could happen when the torrents get paused that they get removed by the Starr apps before the seeding goal is reached."
1. Pause torrents in a specified age range that reside on your cache drive.
1. Run the unRAID mover.
1. Resume the torrents after the mover has completed.
!!! warning
The screenshots are just examples to show you how it should look and where you need to place the data that you need to add, they aren't always a 100% reflection of the actual data and not always 100% up to date with the actual data you need to add.
- Always follow the data described in the guide.
- If you got any questions or aren't sure just click the chat badge to join the Discord Channel where you can ask your questions directly.
The screenshots below are only **EXAMPLES** to show you how it should look and where you need to place the data that you need to add. They are **NOT** always a 100% reflection of the actual data, and not always the actual values you need to add.
- Always follow the recommendations described in the guide.
- If you have any questions, or aren't sure, just click the chat badge to join the Discord Channel where you can ask your questions directly.
## Needed
### The Script
### qBit-Mover script
Download the following standalone script.
Download the following standalone Python script.
- [Script](https://raw.githubusercontent.com/StuffAnThings/qbit_manage/master/scripts/mover.py){:target="_blank" rel="noopener noreferrer"}
- [Script (mover.py)](https://raw.githubusercontent.com/StuffAnThings/qbit_manage/master/scripts/mover.py){:target="_blank" rel="noopener noreferrer"}
Big Thnx to [bobokun](https://github.com/bobokun){:target="_blank" rel="noopener noreferrer"} Developer of [qBit Manage](https://github.com/StuffAnThings/qbit_manage){:target="_blank" rel="noopener noreferrer"}
@ -35,174 +32,194 @@ Big Thnx to [bobokun](https://github.com/bobokun){:target="_blank" rel="noopener
Install the following Plugins.
- User Scripts
- Nerd Tools
- python3 [^2]
- python-setuptools [^2]
- python-pip [^2]
- NerdTools
- python3 <sup>(*1*)</sup>
- python-setuptools <sup>(*1*)</sup>
- python-pip <sup>(*1*)</sup>
!!! info "<sup>(*1*)</sup> These need to be installed from NerdTools."
------
## Setup
After you installed the needed Plugins it's time to configure everything.
After you install the needed `Plugins` - it's time to configure everything.
### qBit API
### `qbittorrent-api` module
The script needs the qBit API to work, so we need to make sure it's installed when your unRaid server is booted or when the Array is started the first time.
The script needs the qbittorrent-api module to work, so we need to make sure it's installed when your unRAID server starts, or when the Array is started the first time.
You can choose from the following 2 options how you want to install it, depending what you preference.
You can choose one of the following 3 options (select a tab) to install `qbittorrent-api`.
- [User scripts](#user-scripts)
- [Go File](#go-file)
=== "User scripts"
With this option, we're going to install the `qbittorrent-api` module when the Array is started the first time.
#### User scripts
In your unRAID Dashboard, go to your `Settings` tab and select `User Scripts` in the `User Utilities` section at the bottom.
With this option we're going to install the qBit API when the Array is started the first time.
![!User Scripts](images/Unraid-settings-user-scripts-icon.png)
Go to your unRaid Dashboard to your settings tab and select in the `User Utilities` at the bottom the new plugin you installed `User Scripts`.
At the bottom of the `User Scripts` page select the `ADD NEW SCRIPT` button.
![!User Scripts](images/Unraid-settings-user-scripts-icon.png)
![!Add New Script](images/Unraid-user-scripts-add-new-script-icon.png)
Select at the bottom `ADD NEW SCRIPT`.
A popup will appear asking you to name the script. For this example, we're going to use `Install qBittorent-API` and then click on `OK`.
![!Add New Script](images/Unraid-user-scripts-add-new-script-icon.png)
![!Install qBittorrent API](images/Unraid-user-scripts-add-new-script-enter-name.png)
A popup will appear where you can give it a name, for this example we're going to use `Install qBittorrent API` and then click on `OK`.
Click on the cogwheel of the new script in the list, and select `Edit Script`.
![!Install qBittorrent API](images/Unraid-user-scripts-add-new-script-enter-name.png)
![!Select user script](images/Unraid-settings-user-scripts-list-select-qbit-api.png)
Click in the list on the cogwheel of the new user scrip you made.
Copy/Paste the following in the new window that opens, then click `SAVE CHANGES`.
![!Select user script](images/Unraid-settings-user-scripts-list-select-qbit-api.png)
```bash
#!/bin/bash
pip3 install qbittorrent-api
```
Copy/Paste in the new windows that opens the following bash command followed by `SAVE CHANGES`.
![!Bash script](images/Unraid-settings-user-scripts-qbit-api.png)
```bash
#!/bin/bash
pip3 install qbittorrent-api
```
Select in the schedule list when the script should run, and choose `At First Array Start Only`.
![!Bash script](images/Unraid-settings-user-scripts-qbit-api.png)
![!Set Run Time](images/Unraid-settings-user-scripts-qbit-api-schedule.png)
Select in the schedule list when the script should run, and choose `At First Array Start Only`.
Click on `Apply`.
![!Set Run Time](images/Unraid-settings-user-scripts-qbit-api-schedule.png)
Finally, you will need to choose `RUN IN BACKGROUND` or restart your unRAID server to install the `qbittorrent-api` module.
Click on `RUN IN BACKGROUND` or restart your unRaid server so the qBit API is installed.
![!RUN IN BACKGROUND](images/Unraid-settings-user-scripts-qbit-api-run-background.png)
![!RUN IN BACKGROUND](images/Unraid-settings-user-scripts-qbit-api-run-background.png)
=== "Python venv"
With this option, we're going to create a [Python virtual environment](https://docs.python.org/3/library/venv.html) on our disk. We will use this to run and store dependencies (`qbittorrent-api`) for this specific environment.
------
By doing this, we will **only need to configure this once** and it will be persistent after reboots *(this differs from the previous steps)*.
#### Go File
First, you need to choose a location to start a new Python environment.
With this option we're going to install the qBit API when the unRaid server is started.
!!! info
In the next steps, you will be asked to choose a [location to store the script](#copy-script-to-your-preferred-location), try to be consistent.
On your USB stick/key go to `/boot/config` and open the `go` file with your favorite editor ([VSCode](https://code.visualstudio.com/){:target="_blank" rel="noopener noreferrer"}/[Notepad++](https://notepad-plus-plus.org/downloads/){:target="_blank" rel="noopener noreferrer"}) and copy/paste the following command.
Suggestions:
```bash
pip3 install qbittorrent-api
```
- `/mnt/user/appdata/qbittorrent/scripts/.venv`
- `/mnt/user/data/scripts/.venv`
Restart your unRaid Server, or run the above command from the terminal.
Run the following command in unRAID's terminal in the directory you chose:
------
```bash
python3 -m venv --clear /mnt/user/data/scripts/.venv
```
### Script
We now need to enter this new environment and install our dependency (`qbittorrent-api`) in it, run:
Edit the script with your favorite editor ([VSCode](https://code.visualstudio.com/){:target="_blank" rel="noopener noreferrer"}/[Notepad++](https://notepad-plus-plus.org/downloads/){:target="_blank" rel="noopener noreferrer"}) you downloaded at the beginning of the guide [HERE](#the-script).
```bash
source /mnt/user/data/scripts/.venv/bin/activate
pip3 install qbittorrent-api
deactivate # to leave the environment
```
You only need to edit a few options in the script
!!! info
Replace `/mnt/user/data/scripts/.venv` with the path you have chosen.
=== "Go File"
With this option, we're going to install the `qbittorrent` module when the unRAID server is started.
```python
# --DEFINE VARIABLES--#
# Set Number of Days to stop torrents between two offsets
# days_from set to 0 will pause any torrents from todays date
# days_to will be the upper limit of how far you want to pause torrents to
days_from = 0
days_to = 2
qbt_host = "192.168.2.200:8080"
qbt_user = None
qbt_pass = None
# --DEFINE VARIABLES--#
```
On your USB stick/key go to `/boot/config` and open the `go` file with your text editor ([VSCode](https://code.visualstudio.com/){:target="_blank" rel="noopener noreferrer"}/[Notepad++](https://notepad-plus-plus.org/downloads/){:target="_blank" rel="noopener noreferrer"}).
- `days_from` => Set Number of Days to stop torrents **from** for the move.
- `days_to` => Set Number of Days to stop torrents **to** for the move.
- `qbt_host` => The URL you use to access qBittorrent locally. (*the* `"` *should remain*)
- `qbt_user` => Your used qBittorrent `User Name` if you have authentication enabled. Add `'` either side.
- `qbt_pass` => Your used qBittorrent `Password` if you have authentication enabled. Add `'` either side.
Copy/paste the following command
```bash
pip3 install qbittorrent-api
```
!!! danger "If you have authentication enabled. Add `'` either side of your User/Password."
Restart your unRAID Server or run the above command from the terminal.
------
### Script
!!! warning ""
Depending on whether you use the unRaid `Mover Tuning` app, You might need to change **line 68**:
Depending on whether you use the unRaid `Mover Tuning` app, You might need to change **line 94**:
- If you do not use `Mover Tuning`, change **line 68** from `os.system('/usr/local/sbin/mover.old start')` to `os.system('/usr/local/sbin/mover start')`
- If you use `Mover Tuning` but **don't** want to use it for the script, do not change **line 68**
- If you use `Mover Tuning` and **do** want to use it for the script, change **line 68** from `os.system('/usr/local/sbin/mover.old start')` to `os.system('/usr/local/sbin/mover start')`. For this option, inside the `Mover Tuner` options you will also need to set `Move Now button follows plugin filters` to `Yes` and `Disable Mover running on a schedule` to `No`.
- If you do not use `Mover Tuning`, change **line 94** from `os.system('/usr/local/sbin/mover.old start')` to `os.system('/usr/local/sbin/mover start')`
- If you use `Mover Tuning` but **don't** want to use it for the script, do not change **line 94**
- If you use `Mover Tuning` and **do** want to use it for the script, change **line 94** from `os.system('/usr/local/sbin/mover.old start')` to `os.system('/usr/local/sbin/mover start')`. For this option, inside the `Mover Tuner` options you will also need to set `Move Now button follows plugin filters` to `Yes` and `Disable Mover running on a schedule` to `No`.
#### Copy script to your preferred location
#### Copy the script to your preferred location
Now it's time to place the script you just edited somewhere easy to access/remember.
Place the script you just edited somewhere easy to access/remember.
Suggestions:
- `/mnt/user/appdata/qbittorrent/scripts` (yes you need to create this folder your self)
- `/mnt/user/data/scripts` (yes you need to create this folder your self)
- `/mnt/user/appdata/qbittorrent/scripts/mover.py`
- `/mnt/user/data/scripts/mover.py`
#### Final steps
Now it's time to setup the scheduler when the mover should run.
Set up the scheduler for when the mover should run.
Go to your unRaid Dashboard to your settings tab and select in the `User Utilities` at the bottom the new plugin you installed `User Scripts`.
In your unRAID Dashboard, go to your `Settings` tab and select `User Scripts` in the `User Utilities` section at the bottom.
![!User Scripts](images/Unraid-settings-user-scripts-icon.png)
Select at the bottom `ADD NEW SCRIPT`.
At the bottom of the `User Scripts` page select the `ADD NEW SCRIPT` button.
![!Add New Script](images/Unraid-user-scripts-add-new-script-icon.png)
A popup will appear where you can give it a name, for this example we're going to use `qBittorrent Mover` and then click on `OK`.
A popup will appear asking you to name the script. For this example, we're going to use `qBittorrent Mover` and then click on `OK`.
![!qBittorrent Mover](images/Unraid-user-scripts-add-new-script-enter-name-qbt.png)
Click in the list on the cogwheel of the new user scrip you made.
Click on the cogwheel of the new script in the list.
![!Select user script](images/Unraid-settings-user-scripts-list-select-qbit-mover.png)
Copy/Paste in the new windows that opens the following bash command followed by `SAVE CHANGES`.
Choose your method (select a tab) and copy/paste the script in the new window that opens, then click `SAVE CHANGES`.
=== "Python (Native)"
``` bash
#!/bin/bash
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "qBittorrent Mover" -d "qBittorrent Mover starting @ `date +%H:%M:%S`."
echo "executing script to pause torrents and run mover."
python3 /mnt/user/data/scripts/mover.py --host "localhost:8080" --user "your_user" --password "your_password" --days_from 0 --days_to 2
echo "qbittorrent-mover completed and resumed all paused torrents."
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "qBittorrent Mover" -d "qBittorrent Mover completed @ `date +%H:%M:%S`."
```
=== "Python (venv)"
``` bash
#!/bin/bash
```bash
#!/bin/bash
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "qBittorrent Mover" -d "qBittorrent Mover starting @ `date +%H:%M:%S`."
echo executing script to pause torrents and run mover.
/usr/bin/python3 /mnt/user/data/scripts/mover.py
echo qbittorrent-mover completed and resumed all paused torrents.
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "qBittorrent Mover" -d "qBittorrent Mover completed @ `date +%H:%M:%S`."
```
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "qBittorrent Mover" -d "qBittorrent Mover starting @ `date +%H:%M:%S`."
echo "executing script to pause torrents and run mover."
/mnt/user/data/scripts/.venv/bin/python3 /mnt/user/data/scripts/mover.py --host "localhost:8080" --user "your_user" --password "your_password" --days_from 0 --days_to 2
echo "qbittorrent-mover completed and resumed all paused torrents."
/usr/local/emhttp/plugins/dynamix/scripts/notify -s "qBittorrent Mover" -d "qBittorrent Mover completed @ `date +%H:%M:%S`."
```
!!! info
Replace the `/mnt/user/data/scripts/mover.py` path to the path where you placed your python script.
Replace `/mnt/user/data/scripts/` in the script with the path you have chosen for the Python script.
- `days_from` => Set Number of Days to stop torrents **from** for the move.
- `days_to` => Set Number of Days to stop torrents **to** for the move.
- `host` => The URL you use to access qBittorrent locally.
- `user` => Your used qBittorrent `User Name` if you have authentication enabled.
- `password` => Your used qBittorrent `Password` if you have authentication enabled.
![!Bash script](images/Unraid-settings-user-scripts-qbit-mover.png)
Select in the schedule list when the script should run, and choose `Custom`
Click the schedule dropdown to choose when the script should run. We want to select `Custom`.
![!Set Run Time](images/Unraid-settings-user-scripts-qbit-mover-schedule.png)
After changing to `Custom` you get on the right a extra option where you can setup your cron schedule when it should be run.
After changing to `Custom` you will get an extra text field on the right where you can set your schedule (cron).
For this example we're going to let the script run a 4am at night. `0 4 * * *`
For this example, we're going to tell the script to run every day at 4 AM.
Setup your own schedule [HERE](https://crontab.guru/)
`0 4 * * *`
![!Set Run Time](images/Unraid-settings-user-scripts-qbit-mover-cron.png)
--8<-- "includes/support.md"
You can generate your scheduling [HERE](https://crontab.guru/)
[^1]:
Starr apps = Sonarr/Radarr etc. Doesn't Starr apps sound better then `The arr(s)` ?
![!Set Run Time](images/Unraid-settings-user-scripts-qbit-mover-cron.png)
[^2]:
These needs to be installed from the Nerd Tools.
{! include-markdown "../../../../includes/support.md" !}

@ -0,0 +1,11 @@
# Themes
A list of known working qBittorrent themes.
| Theme | Style | Compatibility |
| ------------------------------------------------------------------------------------------------------------------------------ | ----- | --------------- |
| [Honeywell](https://github.com/stacksmash76/qbt-honeywell){:target="_blank" rel="noopener noreferrer"} | Dark | v4.3.1 - v4.4.5 |
| [Nightwalker Theme (CallMeBruce fork)](https://github.com/CallMeBruce/nightwalker){:target="_blank" rel="noopener noreferrer"} | Dark | v4.5 |
| [World of Quinoa](https://github.com/gl0ryus/woq){:target="_blank" rel="noopener noreferrer"} | Dark | v4.3.9, v4.4.5 |
--8<-- "includes/support.md"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

@ -8,17 +8,20 @@ These are 3rd party applications to sync several sections of the guide with your
| Radarr Custom Formats | v | v |
| Radarr Use Flowchart to choose the correct Custom Formats for your Quality Profile | v | |
| Radarr predefined config files available | | v |
| Radarr Clear all Custom Formats | v | |
| Radarr Clear all Custom Formats | v | v |
| Radarr Scores | v | v |
| Radarr Quality Settings (File Size) | v | v |
| Radarr Naming Scheme | v | |
| Radarr Naming Scheme | v | v |
| Radarr Quality Profiles | | v |
| Sonarr v3 Release Profile RegEx | v | v |
| Sonarr v4 Custom Formats | v | v |
| Sonarr v4 predefined config files available | | v |
| Sonarr v3/v4 Clear all Release Profiles/Custom Formats | v | |
| Sonarr v3/v4 Clear all Release Profiles | v | |
| Sonarr v3/v4 Clear all Custom Formats | v | v |
| Sonarr v3/v4 Scores | v | v |
| Sonarr v3/v4 Quality Settings (File Size) | v | v |
| Sonarr v3/v4 Naming Scheme | v | |
| Sonarr v3/v4 Naming Scheme | v | v |
| Sonarr v3/v4 Quality Profiles | | v |
------
@ -32,7 +35,7 @@ After setup it's fully automated and will check every X minutes for updates to t
Just enable the Custom Formats/Release Profiles you want.
??? success "Examples - [CLICK TO EXPAND]"
??? success "Examples - [Click to show/hide]"
Radarr Custom Formats Table
![!Notifiarr Custom Format Table](images/sync/notifiarr-cf-table.png)
@ -65,8 +68,9 @@ Just enable the Custom Formats/Release Profiles you want.
## Recyclarr
[Recyclarr Info](/Recyclarr/){:target="_blank" rel="noopener noreferrer"}
[Info](/Recyclarr/){:target="_blank" rel="noopener noreferrer"} // [Documentation](https://recyclarr.dev/wiki/){:target="_blank" rel="noopener noreferrer"}
[Recyclarr Documentation](https://recyclarr.dev/wiki/){:target="_blank" rel="noopener noreferrer"}
Recyclarr is a command line application utilizing configuration files to sync the guides to Radarr &
Sonarr.
--8<-- "includes/support.md"

@ -10,7 +10,7 @@
## Sonarr
??? example "Sonarr Examples - [CLICK TO EXPAND]"
??? example "Sonarr Examples - [Click to show/hide]"
`Settings` => `Media Management` => `Importing`
@ -28,7 +28,7 @@
## Radarr
??? example "Radarr Examples - [CLICK TO EXPAND]"
??? example "Radarr Examples - [Click to show/hide]"
`Settings` => `Media Management` => `Importing`
@ -46,7 +46,7 @@
## SABnzbd
??? example "SABnzbd Examples - [CLICK TO EXPAND]"
??? example "SABnzbd Examples - [Click to show/hide]"
`SABnzbd config` => `Folders`
@ -56,9 +56,16 @@
![sabnzbd-categories](/Downloaders/SABnzbd/images/sabnzbd-categories.png)
Don't forget to look at the full SABnzbd Guides
- [SABnzbd - Basic Setup](/Downloaders/SABnzbd/Basic-Setup/)
- [SABnzbd - Paths and Categories](/Downloaders/SABnzbd/Paths-and-Categories/)
## NZBGet
??? example "NZBGet Examples - [CLICK TO EXPAND]"
??? example "NZBGet Examples - [Click to show/hide]"
!!! danger "NZBGet development has been officially abandoned by the developer :bangbang:"
`Settings` => `PATHS`
@ -68,25 +75,41 @@
![nzbget-settings-categories](images/nzbget-settings-categories.png)
Don't forget to look at the full NZBGet Guides
- [NZBGet - Basic Setup](/Downloaders/NZBGet/Basic-Setup/)
- [NZBGet - Paths and Categories](/Downloaders/NZBGet/Paths-and-Categories/)
## qBittorrent
??? example "qBittorrent Examples - [CLICK TO EXPAND]"
??? example "qBittorrent Examples - [Click to show/hide]"
`Options` => `Downloads`
![qbt-options-downloads](images/qbt-options-downloads.png)
Don't forget to look at the full qBittorrent Guides
- [qBittorrent - Basic Setup](/Downloaders/qBittorrent/Basic-Setup/)
- [qBittorrent - Paths](/Downloaders/qBittorrent/Paths/)
- [qBittorrent - How to add categories](/Downloaders/qBittorrent/How-to-add-categories/)
## Deluge
??? example "Deluge Example - [CLICK TO EXPAND]"
??? example "Deluge Example - [Click to show/hide]"
`Preferences` => `Downloads`
![deluge-preferences-downloads](images/deluge-preferences-downloads.png)
Don't forget to look at the full Deluge Guides
- [Deluge - Basic Setup](/Downloaders/Deluge/Basic-Setup/)
- [Deluge - Using Labels](/Downloaders/Deluge/Using-Labels/)
## ruTorrent
??? example "ruTorrent Examples - [CLICK TO EXPAND]"
??? example "ruTorrent Examples - [Click to show/hide]"
`../config/rtorrent/config/rtorrent.rc` (path to your appdata)

@ -27,7 +27,7 @@ Then Continue to [How to setup for](/Hardlinks/How-to-setup-for/) your installat
### What are Hardlinks
??? question "**What are hardlinks?** - [CLICK TO EXPAND]"
??? question "**What are hardlinks?** - [Click to show/hide]"
- [**Short answer**] Having a file in multiple locations without using double your storage space.
- [**Long answer**] Hard links are a way for a copy operation to be instant and not consume space for those additional copies.
@ -55,12 +55,12 @@ Then Continue to [How to setup for](/Hardlinks/How-to-setup-for/) your installat
### What are Instant Moves (Atomic Moves)
??? question "**What are Instant Moves (Atomic Moves)?** - [CLICK TO EXPAND]"
??? question "**What are Instant Moves (Atomic Moves)?** - [Click to show/hide]"
A real move and not a copy file from download folder to media folder and then delete file from download folder.
### What are the Starr Apps
??? question "**What are the `Starr Apps`?** - [CLICK TO EXPAND]"
??? question "**What are the `Starr Apps`?** - [Click to show/hide]"
Sonarr, Radarr, Lidarr, etc.

@ -41,7 +41,7 @@
The appdata (`/config`) will be stored on the host in the `/docker/appdata/{appname}`
??? example "docker-compose - [CLICK TO EXPAND]"
??? example "docker-compose - [Click to show/hide]"
```yaml
--8<-- "includes/docker/docker-compose.yml"

@ -79,7 +79,7 @@ When that's all set then you will need to change the paths you're going to use i
- [Deluge](#deluge)
- [ruTorrent](#rutorrent)
??? example "Sonarr Examples - [CLICK TO EXPAND]"
??? example "Sonarr Examples - [Click to show/hide]"
##### Sonarr
@ -97,7 +97,7 @@ When that's all set then you will need to change the paths you're going to use i
![ds-sonarr-tv](images/ds-sonarr-tv.png)
??? example "Radarr Examples - [CLICK TO EXPAND]"
??? example "Radarr Examples - [Click to show/hide]"
##### Radarr
@ -115,7 +115,7 @@ When that's all set then you will need to change the paths you're going to use i
![ds-radarr-movies](images/ds-radarr-movies.png)
??? example "SABnzbd Examples - [CLICK TO EXPAND]"
??? example "SABnzbd Examples - [Click to show/hide]"
##### SABnzbd
@ -127,7 +127,7 @@ When that's all set then you will need to change the paths you're going to use i
![ds-sabnzbd-categories](images/ds-sabnzbd-categories.png)
??? example "NZBGet Examples - [CLICK TO EXPAND]"
??? example "NZBGet Examples - [Click to show/hide]"
##### NZBGet
@ -139,7 +139,7 @@ When that's all set then you will need to change the paths you're going to use i
![ds-nzbget-settings-categories](images/ds-nzbget-settings-categories.png)
??? example "qBittorrent Examples - [CLICK TO EXPAND]"
??? example "qBittorrent Examples - [Click to show/hide]"
##### qBittorrent
@ -147,7 +147,7 @@ When that's all set then you will need to change the paths you're going to use i
![ds-qbt-options-downloads](images/ds-qbt-options-downloads.png)
??? example "Deluge Example - [CLICK TO EXPAND]"
??? example "Deluge Example - [Click to show/hide]"
##### Deluge
@ -155,7 +155,7 @@ When that's all set then you will need to change the paths you're going to use i
![ds-deluge-preferences-downloads](images/ds-deluge-preferences-downloads.png)
??? example "ruTorrent Examples - [CLICK TO EXPAND]"
??? example "ruTorrent Examples - [Click to show/hide]"
##### ruTorrent

@ -16,10 +16,10 @@ This page will provide you with guidance on how to install several Docker images
### Automated Script
??? example "Automated script (**:bangbang:Use this script at your own risk:bangbang:**) - [CLICK TO EXPAND]"
??? example "Automated script (**:bangbang:Use this script at your own risk:bangbang:**) - [Click to show/hide]"
!!! Warning
Though, we offer a short way out. This is intended as a quick way to do everything that is written on this page within one script. And is only for initial setup. After that, you need to manage it yourself. Rerunning the script will reset all personal changes made in the compose/env.
Though, we offer a short way out. This is intended as a quick way to do everything that is written on this page within one script. And is only for initial setup. After that, you need to manage it yourself. Rerunning the script can or will reset all personal changes made in the compose/env.
The script is only tested on Synology DSM7 and higher.
@ -166,7 +166,7 @@ If you use both then run both commands
#### If you use usenet
```bash
mkdir -p /volume1/data/{usenet/complete/{tv,movies,music},media/{tv,movies,music}}
mkdir -p /volume1/data/{usenet/{incomplete,complete}/{tv,movies,music},media/{tv,movies,music}}
```
#### If you use torrents
@ -227,7 +227,7 @@ wget https://raw.githubusercontent.com/TRaSH-/Guides-Synology-Templates/main/doc
### Whats included and Whats not included
??? question "What's included and What's not included - [CLICK TO EXPAND]"
??? question "What's included and What's not included - [Click to show/hide]"
This docker-compose file will have the following docker containers included.
@ -303,7 +303,7 @@ At `Task Settings` tab, add the following line in the Run Command section:
It can be frustrating to test the script if no docker image updates are available, for that you can run command `sudo pullio --debug` and the script will behave as if an update is available. If you have set to receive notifications, you should receive them.
More info about Pullio [HERE](https://hotio.dev/pullio/){:target="_blank" rel="noopener noreferrer"}
More info about Pullio [HERE](https://hotio.dev/scripts/pullio/){:target="_blank" rel="noopener noreferrer"}
------
@ -362,3 +362,19 @@ You will notice that all the images will be downloaded, after that the container
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->
------
## Additional Synology Info
### DSM Task for correctly reporting IP in Plex/Nginx/Etc
Due to some iptables configuration in DSM, you can get an incorrect IP reported in Plex or other apps that need an read/report the IP. To fix this, you need to add two rules to your iptables. unfortunately, those rules can sometimes be deleted at reboot or after DSM update.
To fix this, you will need to add a Scheduled Task that executes at boot with root user, which will check if the rules exists, if not, re-add them.
??? question "Task bash command - [Click to show/hide]"
```bash
--8<-- "includes/hardlinks/docker-iptables-fix.sh"
```

@ -102,7 +102,7 @@ Click `Submit` once complete.
Navigate to Services and click the edit icon under `Actions` on the `NFS` row.
Enabling `NFSv4` is optional, but I generally prefer it since NFSv4 has some improvements over NFSv3. Make sure to check `Allow non-root mount` under `Other Options`.
Enabling `NFSv4` is optional. If you wish to do so you will need to ensure that your NAS and host are on the same domain (verify with `hostname -d`), otherwise you'll run into permission issues (indicated by `nobody:4294967294` when checking files). Alternatively, enable `NFSv3 ownership model for NFSv4` to avoid the domain requirements. Make sure to check `Allow non-root mount` under `Other Options`.
One of the most important options here is the `Number of servers` setting. If you click on the help icon you'll see the help text for this setting, which indicates that you should keep this less than or equal to the number of CPUs reported by `sysctl -n kern.smp.cpus` to limit CPU context switching.

@ -1,56 +1,88 @@
# Unraid
# unRAID
!!! note
The first thing you need to do is forget the suggested paths from the Spaceinvader One YouTube Tutorials,
and don't use the predefined paths from the unraid templates.
(Spaceinvader One YouTube guides are great to learn how to start with unraid or how to setup certain applications, and yes I did and still do use them. Probably the main reason why he's using those path is because they are predefined in the template)
!!! warning "**DO NOT** use the template paths from unRAID or the suggested paths from SpaceInvader One"
SpaceInvader One YouTube guides are great for learning how to start with unRAID or how to set up certain applications - and yes I did and still do use them.<br><br>The main reason why he's probably using those paths is because they are predefined in the templates.
------
## Preparation
Make sure hardlinks support is enabled in your `Settings` => `Global Share Settings`.
Make sure `Tunable (support Hard Links)` is enabled in your `Settings` => `Global Share Settings`.
![Enable Hardlink support](images/unraid-enable-hardlinks.png)
=== "unRAID 6.12"
![Enable Hardlink support (New)](images/unraid-enable-hardlinks_612.png)
=== "unRAID 6.11"
![Enable Hardlink support](images/unraid-enable-hardlinks.png)
## Create the main share
!!! warning "To get Hardlinks and Atomic-Moves working with Unraid,<br>You will need to make use of <u>**ONE**</u> share with subfolders."
!!! warning "To get Hardlinks and Atomic-Moves working with unRAID,<br>You will need to make use of <u>**ONE**</u> share with subfolders."
For this example I'm using my own setup and preferred share `data`.
In this example, I'm using my own setup and the preferred share `data`.
Go to your dashboard and on the top select `shares` select `add share` .
Go to your dashboard and select `Shares` on the navigation bar, then choose `Add Share`.
![!unraid-main-share](images/unraid-main-share.png)
=== "unRAID 6.12 (No Cache)"
![!unraid-main-share-array-6-12](images/unraid_main_share_array_612.png)
=== "unRAID 6.12 (Cache)"
![!unraid-main-share-cache-6-12](images/unraid_main_share_cache_612.png)
=== "unRAID 6.11"
![!unraid-main-share](images/unraid-main-share.png)
1. use `data`
1. if you got a cache drive and want to make use of it put it on `Yes` or keep it disabled (Hardlinks will stay in tact if you're using the cache)
1. click on `ADD SHARE`
1. Use `data`
1. Set up your share with the applicable settings.
=== "unRAID 6.12 (No Cache)"
Select the `Primary storage` as `Array` (shown in the `No Cache` tab above).
=== "unRAID 6.12 (Cache)"
1. Select the `Primary storage` as `Cache` (shown in the `Cache` tab above).
1. Select the `Secondary storage` as `Array`
1. Make sure `Mover action` is set to `Cache -> Array`
=== "unRAID 6.11"
Choose `Yes` on step (2) (unRAID 6.11 tab above). If not using a cache drive, keep this option disabled.
!!! info "Hardlinks will stay intact if you're using a cache"
1. Click on `ADD SHARE`
!!! note
Keep in mind regarding the use of the Cache drive, The mover can't move files that are in use, like when seeding with torrents. You will need to stop/pause the torrents so the mover can move them to your Array.
Keep in mind, regarding the use of the cache drive, unRAID's integrated mover cannot move files that are in use, like seeding torrents. You will need to stop/pause the torrents so the mover can move the files from the cache to your array.
!!! tip "If you use qBittorrent you can automate the process by following the following Guide [HERE](/Downloaders/qBittorrent/Tips/How-to-run-the-unRaid-mover-for-qBittorrent/){:target="_blank" rel="noopener noreferrer"}"
!!! tip "If you use qBittorrent you can automate the process by following the following Guide [HERE](/Downloaders/qBittorrent/Tips/How-to-run-the-unRaid-mover-for-qBittorrent/){:target="_blank" rel="noopener noreferrer"}<br>If you use Deluge you can automate the process by following the following Guide [HERE](/Downloaders/Deluge/Tips/Unraid-Mover/){:target="_blank" rel="noopener noreferrer"}"
With Usenet you won't have any issues.
With Usenet, you won't have any issues.
------
## Folder Structure
On the host (Unraid) you will need to add `/mnt/user` before it. **So `/mnt/user/data`**
On the host (unRAID) you will need to add `/mnt/user` before it. **So `/mnt/user/data`**
The `data` folder has sub-folders for `torrents` and `usenet` and each of these have sub-folders for `tv`, `movie` and `music` downloads to keep things neat. The `media` folder has nicely named `TV`, `Movies` and `Music` sub-folders, this is your library and what youd pass to Plex, Emby or JellyFin.
{! include-markdown "../../../includes/hardlinks/docker-tree-full.md" !}
These subfolders you need to create your self, you can use krusader or winscp to create them or any other way you prefer.
*I'm using lower-case on all folders on purpose, being Linux is case-sensitive.*
{! include-markdown "../../../includes/hardlinks/docker-tree-full.md" !}
The `data` folder has sub-folders for `torrents` and `usenet`, and each of these has sub-folders for `tv`, `movie` and `music` downloads to keep things organized. The `media` folder has nicely named `TV`, `Movies` and `Music` sub-folders, this is where your library resides, and what youd pass to Plex, Emby or JellyFin.
*I'm using lower case on all folder on purpose, being Linux is case sensitive.*
You will need to create these subfolders yourself. You can do this in any way you prefer, but the fastest way to create all the necessary subfolders would be to use the terminal (explained below). Alternatively, Krusader or WinSCP are popular choices if you are unsure.
### Fastest way to create the needed subfolders
The fastest way to create all the necessary subfolders would be to use the terminal, use a program like [PuTTy](https://www.putty.org/){:target="_blank" rel="noopener noreferrer"} or use the terminal from the dashboard.
These options will automatically create the required subfolders for your media library as well as your preferred download client(s).
If you use both torrents and usenet, use both commands.
#### If you use usenet
```bash
mkdir -p /mnt/user/data/{usenet/{incomplete,complete}/{tv,movies,music},media/{tv,movies,music}}
```
#### If you use torrents
```bash
mkdir -p /mnt/user/data/{torrents/{tv,movies,music},media/{tv,movies,music}}
```
------
@ -61,15 +93,15 @@ These subfolders you need to create your self, you can use krusader or winscp to
## Setting up the containers
After you created all the needed folders it's time to setup the paths in the docker containers.
After you've created all the necessary folders, it's time to set up the Docker container's paths.
Go to your dashboard and select your docker container you want to edit or if you're starting fresh add the docker containers you want to use or prefer.
Go to your dashboard and select the Docker container you want to edit, or, if you're starting fresh, add the container/App you want to use.
Unraid makes it actually pretty clear what's the Host Path and what's the Container Path.
unRAID makes it pretty clear which is the Host Path and Container Path.
`Container Path:` => The path that will be used inside the container.
`Container Path:` => The path that will be used from inside the container.
`Host Path:` => The path on your Unraid Server (The Host).
`Host Path:` => The actual/absolute path used on your unRAID Server (The Host).
------
@ -85,7 +117,7 @@ qBittorrent, Deluge, ruTorrent
!!! info
The reason why we use `/data/torrents/` for the torrent client is because it only needs access to the torrent files. In the torrent software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/torrents/{tv|movies|music}`.
The reason why we use `/data/torrents/` for the torrent client is because it only needs access to the torrent data. In the torrent software settings, youll need to configure your categories/labels to utilize the right path for specific content. You can sort into sub-folders like `/data/torrents/{tv|movies|music}`.
{! include-markdown "../../../includes/hardlinks/docker-tree-torrents.md" !}
@ -103,7 +135,7 @@ NZBGet or SABnzbd
!!! info
The reason why we use `/data/usenet/` for the usenet client is because it only needs access to the usenet files. In the usenet software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/usenet/{tv|movies|music}`.
The reason why we use `/data/usenet/` for the usenet client is that it only needs access to the usenet data. In the usenet software settings, youll need to configure your paths to sort content into sub-folders like `/data/usenet/{tv|movies|music}`.
{! include-markdown "../../../includes/hardlinks/docker-tree-usenet.md" !}
@ -121,7 +153,7 @@ Sonarr, Radarr and Lidarr
!!! info
Sonarr, Radarr and Lidarr gets access to everything because the download folder(s) and media folder will look like and be one file system. Hard links will work and moves will be atomic, instead of copy + delete.
Sonarr, Radarr and Lidarr get access to everything because the download folder(s) and media folder will need to look like, and be one mount, on the file system. Hard links will work properly and any moves will be atomic, rather than copying and deleting.
{! include-markdown "../../../includes/hardlinks/docker-tree-full.md" !}
@ -139,7 +171,7 @@ Plex, Emby, JellyFin and Bazarr
!!! info
Plex, Emby, JellyFin and Bazarr only needs access to your media library, which can have any number of sub folders like Movies, Kids Movies, TV, Documentary TV and/or Music as sub folders.
Plex, Emby, JellyFin and Bazarr only need access to your media library, which can have any number of sub-folders (Movies, Kids Movies, TV, Documentary TV and/or Music).
{! include-markdown "../../../includes/hardlinks/docker-tree-media.md" !}
@ -149,19 +181,20 @@ Plex, Emby, JellyFin and Bazarr
![!unraid-final-result](images/unraid-final-result.png)
**Don't forget to look at the [Examples](/Hardlinks/Examples/) how to setup the paths inside your applications.**
### Examples how to set up your paths INSIDE your applications
**Don't forget to look at the [Examples](/Hardlinks/Examples/) of how to set up your paths INSIDE your applications.**
### Video Tutorial
## Video Tutorial
!!! tip ""
Big Thanks to IBRACORP for noticing this Guide and creating a Video covering this unraid section.
Big Thanks to IBRACORP for noticing this Guide and creating a Video covering this unRAID section.
The reason why I added the video to the end is because I want the user to actually learn and understand why it's recommended to use this folder structure, before going straight to the YouTube video.
The reason why I have this video at the end is because I want the users to ACTUALLY LEARN and UNDERSTAND why it's recommended to use this folder structure prior to going straight to a YouTube video.
<iframe width="560" height="315" src="https://www.youtube.com/embed/AMcHsQJ7My0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Also check out other videos from IBRACORP [HERE](https://www.youtube.com/c/IBRACORP/videos){:target="_blank" rel="noopener noreferrer"}
Check out other videos from IBRACORP [HERE](https://www.youtube.com/c/IBRACORP/videos){:target="_blank" rel="noopener noreferrer"}
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->
--8<-- "includes/support.md"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

@ -4,14 +4,14 @@ You recently switched to a proper setup that supports Hardlinks and Instant Move
And you would like to replace copies with hardlinks ?
If your Operating System supports it you could make use of [Jdupes](https://github.com/jbruchon/jdupes).
If your Operating System supports it you could make use of [Jdupes](https://codeberg.org/jbruchon/jdupes).
## Usage
!!! info ""
I won't cover every command :bangbang:
If you want to know what else [Jdupes](https://github.com/jbruchon/jdupes) can do please read the manual.
If you want to know what else [Jdupes](https://codeberg.org/jbruchon/jdupes) can do please read the manual.
!!! tip
This process can take a long time and a pretty big hit on your resources depending on how big your library is, I did notice the first time it takes longer then the second time. Not sure if this is a cache thing or something else.
@ -26,13 +26,13 @@ jdupes [options] DIR1 DIR2
This will do a dry run and summarize at the end.
```bash
jdupes -M -r "/data/torrents/movies/" "/data/media/movies"
jdupes -rMX onlyext:mp4,mkv,avi "/data/torrents/movies/" "/data/media/movies"
```
This will hard link all duplicate files without prompting.
```bash
jdupes -L -r "/data/torrents/movies/" "/data/media/movies"
jdupes -rLX onlyext:mp4,mkv,avi "/data/torrents/movies/" "/data/media/movies"
```
!!! bug ""

@ -3,11 +3,13 @@
!!! note
These settings are a recommendation if you want to choose other settings be my guest.
If you want to support me, please use the following [referral link](https://torguard.net/aff.php?aff=5575){:target="_blank" rel="noopener noreferrer"} and use one of the following codes:
If you want to support me, please use this [referral link](https://torguard.net/aff.php?aff=5575){:target="_blank" rel="noopener noreferrer"} and enter the following discount code:
* `TGLIFE`: Get 50% Off for Life for Anonymous Proxy, Anonymous VPN, Anonymous Webmail.
* `TGLIFE-STREAMING`: Get 50% Off for Life Anonymous Proxy, Anonymous VPN, Streaming Bundle.
* `TGLIFE-PRO`: Get 50% Off for Life for Anonymous VPN, Streaming Bundle, Anonymous VPN Pro.
Get 50% Off ALL Plans (Anonymous VPN, Anonymous VPN Pro, Anonymous VPN Premium)
```
TRaSH-Guides-2024
```
[![torguard-FreeTrial-270x90](images/torguard/torguard-FreeTrial-728x90.gif)](https://torguard.net/aff.php?aff=5575){:target="_blank" rel="noopener noreferrer"}
@ -16,6 +18,8 @@
I Talked to several people and they are still able to use Torguard for Torrents, Perhaps because the connection is encrypted. And others just selected a server in another country.
!!! warning "If the US server doesn't work for you use another country"
[Source Torguard](https://torguard.net/blog/why-torguard-is-blocking-bittorrent-on-us-servers/){:target="_blank" rel="noopener noreferrer"}.
[Source Torrentfreak](https://torrentfreak.com/torguard-settles-piracy-lawsuit-and-agrees-to-block-torrent-traffic-on-u-s-servers-220314/){:target="_blank" rel="noopener noreferrer"}.
@ -26,7 +30,7 @@
Login to your [Client Area](https://torguard.net/clientarea.php){:target="_blank" rel="noopener noreferrer"}.
??? success "Example - [CLICK TO EXPAND]"
??? success "Example - [Click to show/hide]"
![!Client Area Login](images/torguard/client-area-login.png)
### Create a user account
@ -36,14 +40,14 @@ This account will be used for authentication with your VPN Torrent client.
`Services` > `My Services` > `Manage` > `Manage Credentials`
??? success "Example - [CLICK TO EXPAND]"
??? success "Example - [Click to show/hide]"
![!Services > My Services](images/torguard/services-my-services.png)
![!Client Area Manage Credentials](images/torguard/client-area-manage-credentials.png)
Create a new username and choose a secure password or create a random username and password.
??? success "Example - [CLICK TO EXPAND]"
??? success "Example - [Click to show/hide]"
![!Create User Account](images/torguard/create_user_account.png)
------
@ -54,7 +58,7 @@ Now it's time to get the IP of your VPN server you're going to use from the [Glo
`Servers` > `Global VPN Network`
??? success "Example - [CLICK TO EXPAND]"
??? success "Example - [Click to show/hide]"
![!Servers > Global VPN Network](images/torguard/servers-globalvpnnetwork.png)
### Global VPN Network
@ -66,7 +70,9 @@ For the best speed it's recommended to choose the one nearest to your location.
!!! tip ""
Sometimes you get better speeds if you use one of your neighboring countries.
Let's use for this example: `USA Miami` and copy/paste the Hostname `us-fl.secureconnect.me`.
!!! warning "If the US server doesn't work for you use another country"
Let's use for this example: `USA Miami` and copy/paste the Hostname `us-fl.torguard.org`.
![!Torguard Global VPN Network](images/torguard/globalvpnnetwork-list.png)
@ -78,13 +84,13 @@ Let's use for this example: `USA Miami` and copy/paste the Hostname `us-fl.secur
Open a cmd window or something equal and type:
```bash
ping us-fl.secureconnect.me
ping us-fl.torguard.org
```
You will then get the IP of the server.
Remember that for later use.
??? success "Example - [CLICK TO EXPAND]"
??? success "Example - [Click to show/hide]"
![!ping](images/torguard/cmd-ping.png)
------
@ -102,7 +108,7 @@ Then click on `Manage` and select `Port Forward Request`.
`Services` > `My Services` > `Manage` > `Port Forward Request`
??? success "Example - [CLICK TO EXPAND]"
??? success "Example - [Click to show/hide]"
![!Port Forward Request](images/torguard/req_port_fwd.png)
### VPN Tunnel Type
@ -135,7 +141,7 @@ Choose your preferred VPN Tunnel type.
#### WireGuard Request Port Forward
??? abstract "WireGuard Request Port Forward - [CLICK TO EXPAND]"
??? abstract "WireGuard Request Port Forward - [Click to show/hide]"
![!Request New Port Forward WireGuard](images/torguard/request-new-pfw-wireguard.png)
@ -171,7 +177,7 @@ From your Client Area go to your [Config Generator](https://torguard.net/tgconf.
`Tools` > `Config Generator`
??? success "Example Select Tools > Config Generator - [CLICK TO EXPAND]"
??? success "Example Select Tools > Config Generator - [Click to show/hide]"
![!Tools - Config Generator](images/torguard/tools-config-generator.png)
### Config Generator
@ -180,7 +186,7 @@ Choose your preferred VPN Tunnel type.
#### OVPN Config Generator
??? abstract "OVPN Config Generator - [CLICK TO EXPAND]"
??? abstract "OVPN Config Generator - [Click to show/hide]"
![!OVPN Config Generator](images/torguard/config-generator-ovpn.png)
@ -200,7 +206,7 @@ Choose your preferred VPN Tunnel type.
#### WireGuard Config Generator
??? abstract "WireGuard Config Generator - [CLICK TO EXPAND]"
??? abstract "WireGuard Config Generator - [Click to show/hide]"
![!WireGuard Config Generator](images/torguard/config-generator-wireguard.png)

@ -11,7 +11,7 @@ If you're using a system with a GUI (Synology, unRAID, OMV, etc.) it's not alway
!!! warning
Please don't use screenshots to provide the info as they aren't always revealing all the needed info
Use one of the following from terminal(puTTy) to get the docker compose with or without the use of `sudo`.
Use one of the following commands in the terminal of your choice (e.g. puTTY) to generate the docker compose, with or without the use of `sudo`. Note that you can pass in multiple container names.
```bash
sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose CONTAINER_NAME CONTAINER_NAME2
@ -23,9 +23,12 @@ sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/
sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose sonarr radarr bazarr nzbget
```
Paste the results on one of the following sites.
!!! warning
Please not share the output directly to Discord, reddit, forums, etc.
Copy and paste the results on one of the following sites.
- [Notifiarr.com](https://logs.notifiarr.com/) (Recommended)
- [Notifiarr.com Privatebin](https://logs.notifiarr.com/){:target="_blank" rel="noopener noreferrer"} (Recommended)
- [Github Gist](https://gist.github.com){:target="_blank" rel="noopener noreferrer"} (Alternative)
- [hastebin.com](https://hastebin.com){:target="_blank" rel="noopener noreferrer"}
- [privatebin.net](https://privatebin.net/){:target="_blank" rel="noopener noreferrer"}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 127 KiB

@ -7,7 +7,7 @@
### How to accomplish the Golden Rule
- For Sonarr check [HERE](/Sonarr/Sonarr-Release-Profile-RegEx/#golden-rule){:target="_blank" rel="noopener noreferrer"}
- For Sonarr check [HERE](/Sonarr/sonarr-collection-of-custom-formats/#golden-rule){:target="_blank" rel="noopener noreferrer"}
- For Radarr check [HERE](/Radarr/Radarr-collection-of-custom-formats/#x265-hd){:target="_blank" rel="noopener noreferrer"}
## Some extra info about 4K/X265

@ -1,4 +1,6 @@
nav:
- Home: index.md
- Tips
- Suggested Plex Media Server Settings: /Plex/Tips/Plex-media-server/
- Optimal Plex Client Settings: /Plex/Tips/Optimal-plex-client-settings/
- Stop 4k Video Transcoding: /Plex/Tips/4k-transcoding/
- Profiles: /Plex/profiles/

@ -1,4 +0,0 @@
nav:
- Suggested Plex Media Server Settings: Plex-media-server.md
- Optimal Plex Client Settings: Optimal-plex-client-settings.md
- JBOPS 4K Transcode Stopping with Tautulli: 4k-transcoding.md

@ -56,7 +56,7 @@ When a change is detected in the source location for a librarys content, the
!!! success ""
**Suggested: `Enabled`**
??? tip "TIP - Autoscan - [CLICK TO EXPAND]"
??? tip "TIP - Autoscan - [Click to show/hide]"
If for some reason ex. your operating systems dont provide this trigger or your storage is mounted on a network (SMB/NFS/Cloud Storage) or your library just doesn't automatically scan, or is just plain impractical, You might want to consider using autoscan. IBRACORP (A Youtube channel I collaborate with) has a video explaining it in further detail.
@ -355,7 +355,7 @@ To use Hardware-Accelerated Encoding in Plex Media Server.
Here you will find your libraries you've added to your Plex Media Server.
??? example "Examples - [CLICK TO EXPAND]"
??? example "Examples - [Click to show/hide]"
- Movies `(/data/media/movies)`
- Movies-4K/Movies-UHD `(/data/media/movies4k)`/`(/data/media/movies-uhd)`

@ -10,7 +10,7 @@ But before you continue to read, as with all my guides:
These Quality Settings have been created and tested with info I got from others, and release comparisons from different sources.
??? question "FAQ - [CLICK TO EXPAND]"
??? question "FAQ - [Click to show/hide]"
## FAQ

File diff suppressed because it is too large Load Diff

@ -13,9 +13,23 @@ The Tokens not available in the release won't be used/shown.
------
## Preparation
Go to `Settings` => `Media Management` and make sure that `Show Advanced` at the top is enabled.
![Enable Advanced](images/radarr-show-adavanced.png)
Once you clicked on the button it should look like this and you should see all the advanced options.
![Unhide Advanced](images/unhide-advanced.png)
Finally, enable `Rename Movies` to reveal the movie renaming options.
![Enable Rename Movies](images/radarr-enable-rename.png)
## Standard Movie Format
This naming scheme is made to be compatible with the [New Plex Agent](https://forums.plex.tv/t/new-plex-media-server-movie-scanner-and-agent-preview/593269/517) that now supports IMDb and TMDb IDs in filenames, if you don't need it or want it just remove `{imdb-{ImdbId}}`
This naming scheme is made to be compatible with the [New Plex Agent](https://forums.plex.tv/t/new-plex-media-server-movie-scanner-and-agent-preview/593269/517){:target="_blank" rel="noopener noreferrer"} that now supports IMDb and TMDb IDs in filenames, if you don't need it or want it just remove `{imdb-{ImdbId}}`
!!! warning "Starting from v4.2.2.6489, Radarr now supports Plex Multiple Edition tags in naming."
@ -25,43 +39,65 @@ This naming scheme is made to be compatible with the [New Plex Agent](https://fo
!!! danger "Only use `{edition-{Edition Tags}}` if you are prepared to have movies separated by edition<br>when using a merged Plex library - e.g., you keep both 1080p and 2160p versions of one movie.<br><br>For example if you have the `Directors Cut` and the `Extended Cut` for one movie, those will show up as two separate movies in your library.<br><br>Note that not using `{edition-{Edition Tags}}` will prevent Plex from recognizing the edition."
### Plex
```bash
{{ radarr['naming']['radarr-naming']['file']['default'] }}
```
??? abstract "RESULTS: - [CLICK TO EXPAND]"
??? abstract "RESULTS: - [Click to show/hide]"
`The Movie Title (2010) {imdb-tt0066921} {edition-Ultimate Extended Edition} [IMAX HYBRID][Bluray-1080p Proper][3D][DV HDR10][DTS 5.1][x264]-EVOLVE`
For Jellyfin/Emby:
#### Plex Anime
```bash
{{ radarr['naming']['radarr-naming']['file']['emby'] }}
{{ radarr['naming']['radarr-naming']['file']['anime'] }}
```
??? abstract "RESULTS: - [CLICK TO EXPAND]"
??? abstract "RESULTS: - [Click to show/hide]"
`The Movie Title (2010) [imdbid-tt0066921] {edition-Ultimate Extended Edition} [IMAX HYBRID][Bluray-1080p Proper][3D][DV HDR10][DTS 5.1][x264]-EVOLVE`
`The Movie Title (2010) {imdb-tt0066921} {edition-Ultimate Extended Edition} [Surround Sound x264][Bluray-1080p Proper][3D][DTS 5.1][DE][10bit][AVC]-EVOLVE`
If you do Anime
### Emby
```bash
{{ radarr['naming']['radarr-naming']['file']['anime'] }}
{{ radarr['naming']['radarr-naming']['file']['emby'] }}
```
??? abstract "RESULTS: - [CLICK TO EXPAND]"
??? abstract "RESULTS: - [Click to show/hide]"
`The Movie Title (2010) {imdb-tt0066921} {edition-Ultimate Extended Edition} [Surround Sound x264][Bluray-1080p Proper][3D][DTS 5.1][DE][10bit][AVC]-EVOLVE`
`The Movie Title (2010) [imdbid-tt0066921] - {edition-Ultimate Extended Edition} [IMAX HYBRID][Bluray-1080p Proper][3D][DV HDR10][DTS 5.1][x264]-EVOLVE`
For Jellyfin/Emby:
#### Emby Anime
```bash
{{ radarr['naming']['radarr-naming']['file']['anime-emby'] }}
```
??? abstract "RESULTS: - [CLICK TO EXPAND]"
??? abstract "RESULTS: - [Click to show/hide]"
`The Movie Title (2010) [imdbid-tt0066921] - {edition-Ultimate Extended Edition} [Surround Sound x264][Bluray-1080p Proper][3D][DTS 5.1][DE][10bit][AVC]-EVOLVE`
### Jellyfin
```bash
{{ radarr['naming']['radarr-naming']['file']['jellyfin'] }}
```
??? abstract "RESULTS: - [Click to show/hide]"
`The Movie Title (2010) [imdbid-tt0066921] - {edition-Ultimate Extended Edition} [IMAX HYBRID][Bluray-1080p Proper][3D][DV HDR10][DTS 5.1][x264]-EVOLVE`
#### Jellyfin Anime
```bash
{{ radarr['naming']['radarr-naming']['file']['anime-jellyfin'] }}
```
??? abstract "RESULTS: - [Click to show/hide]"
`The Movie Title (2010) [imdbid-tt0066921] {edition-Ultimate Extended Edition} [Surround Sound x264][Bluray-1080p Proper][3D][DTS 5.1][DE][10bit][AVC]-EVOLVE`
`The Movie Title (2010) [imdbid-tt0066921] - {edition-Ultimate Extended Edition} [Surround Sound x264][Bluray-1080p Proper][3D][DTS 5.1][DE][10bit][AVC]-EVOLVE`
------
@ -99,9 +135,7 @@ The filename can be Obscured where the Release naming isn't, especially when you
{{ radarr['naming']['radarr-naming']['folder']['default'] }}
```
RESULT:
`The Movie Title (2010)`
<small>RESULT:</small> `The Movie Title (2010)`
------
@ -114,29 +148,33 @@ RESULT:
TMDb is usually better as it guarantees a match, IMDb only gets matched if the TMDb entry has the correct IMDb ID association. We don't actually talk to IMDb.
#### Optional Movies Folder Format for the Plex Movies Scanner and Jellyfin/Emby
#### Optional Movies Folder Format
This naming scheme is made to be compatible with the new [Plex TV Series Scanner](https://forums.plex.tv/t/beta-new-plex-tv-series-scanner/696242){:target="_blank" rel="noopener noreferrer"} that now support IMDB and TVDB IDs in file names.
For Plex:
##### Optional Plex
```bash
{{ radarr['naming']['radarr-naming']['folder']['plex'] }}
```
RESULT:
`The Movie Title (2010) {imdb-tt1520211}`
<small>RESULT:</small> `The Movie Title (2010) {imdb-tt1520211}`
For Jellyfin/Emby:
##### Optional Emby
```bash
{{ radarr['naming']['radarr-naming']['folder']['emby'] }}
```
RESULT:
<small>RESULT:</small> `The Movie Title (2010)`
##### Optional Jellyfin
```bash
{{ radarr['naming']['radarr-naming']['folder']['jellyfin'] }}
```
`The Movie Title (2010) [imdbid-tt1520211]`
<small>RESULT:</small> `The Movie Title (2010) [imdbid-tt1520211]`
!!! tip
IMDb IDs are going to be very accurate and rarely change, TVDB/TMDB IDs, on the other hand, do change or are removed more frequently.

@ -72,7 +72,7 @@ Open up the download client. For this example I will be using SABnzbd.
This is what you put in your Host in Remote Path Mapping.
This could be a `hostname`, `container name` or a `IP Address`
??? example "example what to add in Add Remote Path Mapping - [CLICK TO EXPAND]"
??? example "example what to add in Add Remote Path Mapping - [Click to show/hide]"
![!rpm-add-rpm-select-sabnzbd](images/rpm-add-rpm-select-sabnzbd.png)
@ -84,7 +84,7 @@ In SABnzbd go to `settings` => `Folders`
![!rpm-sabnzbd-folders-cdf](images/rpm-sabnzbd-folders-cdf.png)
??? example "example what to add in Add Remote Path Mapping - [CLICK TO EXPAND]"
??? example "example what to add in Add Remote Path Mapping - [Click to show/hide]"
![!rpm-add-rpm-remote-path](images/rpm-add-rpm-remote-path.png)
@ -94,7 +94,7 @@ To find out what you need to put in in your local path you need to know how Rada
Click on the browse button and browse to the location where the files are accessible for Radarr.
??? example "example what to add in Add Remote Path Mapping - [CLICK TO EXPAND]"
??? example "example what to add in Add Remote Path Mapping - [Click to show/hide]"
![!rpm-add-local-path](images/rpm-add-local-path.png)

@ -2,7 +2,7 @@
Here we will explain how to setup your own preferred language Custom Format, with a few examples.
!!! warning "Using language Custom Formats is not compatible with setting a preferred language in a quality profile in Radarr. You must use one or the other.<br>If you want to make use of the Custom Formats set the preferred language to `Any`."
!!! warning "Using language Custom Formats is not compatible with setting a preferred language in a quality profile in Radarr. You must use one or the other.<br>If you want to make use of the Custom Formats set the preferred language to `Any`.<br><br>Sonarr doesn't have a preferred language in the quality profile, so this can be ignored if you're setting this up with Sonarr"
## Language Examples
@ -24,9 +24,9 @@ With this Custom Format you will get only the Movie/TV Show with the original la
For this we're going to make use of so called reverse scoring.
Add the following json to your Radarr/Sonarr with a score of `-10000`.
Add the following json to your Radarr/Sonarr with a score in your profile of `-10000`.
??? example "JSON - [CLICK TO EXPAND]"
??? example "JSON - [Click to show/hide]"
```json
[[% filter indent(width=4) %]][[% include 'json/guide-only/language-not-original.json' %]][[% endfilter %]]
@ -44,9 +44,9 @@ With this Custom Format you will only get the Movie/TV Show in the English langu
For this we're going to make use of so called reverse scoring.
Add the following json to your Radarr/Sonarr with a score of `-10000`.
Add the following json to your Radarr/Sonarr with a score in your profile of `-10000`.
??? example "JSON - [CLICK TO EXPAND]"
??? example "JSON - [Click to show/hide]"
```json
[[% filter indent(width=4) %]][[% include 'json/guide-only/language-not-english.json' %]][[% endfilter %]]
@ -68,9 +68,9 @@ With this Custom Format you will only get the Movie/TV Show with Dutch and/or Fl
For this we're going to make use of so called reverse scoring.
Add the following json to your Radarr/Sonarr with a score of `-10000`.
Add the following json to your Radarr/Sonarr with a score in your profile of `-10000`.
??? example "JSON - [CLICK TO EXPAND]"
??? example "JSON - [Click to show/hide]"
```json
[[% filter indent(width=4) %]][[% include 'json/guide-only/language-not-dutch.json' %]][[% endfilter %]]
@ -87,17 +87,17 @@ Let's say you want German, but if German is not available then fall back to Orig
!!! info "For languages other than German, replace the German condition with language of your choice."
Add the following json to your Radarr/Sonarr with a score of `-10000`.
Add the following json to your Radarr/Sonarr with a score in your profile of `-10000`.
??? example "JSON - [CLICK TO EXPAND]"
??? example "JSON - [Click to show/hide]"
```json
[[% filter indent(width=4) %]][[% include 'json/guide-only/language-not-original-or-german.json' %]][[% endfilter %]]
```
Add the following json to your Radarr/Sonarr with a score of `10`.
Add the following json to your Radarr/Sonarr with a score in your profile of `10`.
??? example "JSON - [CLICK TO EXPAND]"
??? example "JSON - [Click to show/hide]"
```json
[[% filter indent(width=4) %]][[% include 'json/guide-only/language-prefer-german.json' %]][[% endfilter %]]
@ -113,9 +113,9 @@ Let's say you just want to prefer German and don't care if you get another rando
!!! info "For languages other than German, replace the German condition with language of your choice."
Add the following json to your Radarr/Sonarr with a score of `10`.
Add the following json to your Radarr/Sonarr with a score in your profile of `10`.
??? example "JSON - [CLICK TO EXPAND]"
??? example "JSON - [Click to show/hide]"
```json
[[% filter indent(width=4) %]][[% include 'json/guide-only/language-prefer-german.json' %]][[% endfilter %]]
@ -135,9 +135,9 @@ In this example I will use Dutch and Flemish since a lot of Movies/TV Shows sinc
!!! info "For languages other than Dutch/Flemish, replace the Dutch/Flemish condition with language of your choice."
Add the following json to your Radarr/Sonarr with a score of `10`.
Add the following json to your Radarr/Sonarr with a score in your profile of `10`.
??? example "JSON - [CLICK TO EXPAND]"
??? example "JSON - [Click to show/hide]"
```json
[[% filter indent(width=4) %]][[% include 'json/guide-only/language-prefer-dutch.json' %]][[% endfilter %]]
@ -149,7 +149,7 @@ Add the following json to your Radarr/Sonarr with a score of `10`.
### What's reverse scoring
??? question "What's reverse scoring? - [CLICK TO EXPAND]"
??? question "What's reverse scoring? - [Click to show/hide]"
With reverse scoring you add a Custom Format with a score of `-10000` and your preferred condition you negate.
@ -157,7 +157,7 @@ Add the following json to your Radarr/Sonarr with a score of `10`.
### Prefer language X over language Y
??? question "Prefer language X over language Y - [CLICK TO EXPAND]"
??? question "Prefer language X over language Y - [Click to show/hide]"
If you want to prefer Prefer language X over language Y,
@ -167,21 +167,21 @@ Add the following json to your Radarr/Sonarr with a score of `10`.
### What's Original Language
??? question "What's Original Language? - [CLICK TO EXPAND]"
??? question "What's Original Language? - [Click to show/hide]"
Original Language is the language in which a Movie/TV Show was originally made.
### Where does Radarr get the Original Language from
??? question "Where does Radarr get the Original Language from? - [CLICK TO EXPAND]"
??? question "Where does Radarr get the Original Language from? - [Click to show/hide]"
Radarr makes use of [The Movie Database (TMDB)](https://www.themoviedb.org/){:target="_blank" rel="noopener noreferrer"}.
Radarr makes use of [The Movie Database (TMDB)](https://www.themoviedb.org/){:target="_blank" rel="noopener noreferrer"}. As of February 12, 2023, Radarr has updated its metadata cache to use a movie's spoken language from TMDb as the original language, but only when there is a single spoken language listed for that movie on TMDb. In cases where multiple spoken languages are listed, Radarr will use the movie's designated original language from TMDb.
![!The Movie Database (TMDB) Original Language](images/original-language-tmdb.png)
### Where does Sonarr get the Original Language from
??? question "Where does Sonarr get the Original Language from? - [CLICK TO EXPAND]"
??? question "Where does Sonarr get the Original Language from? - [Click to show/hide]"
Sonarr makes use of [TheTVDB](https://thetvdb.com/){:target="_blank" rel="noopener noreferrer"}.

@ -1,39 +1,44 @@
# How to rename your folders
If you want to rename your current folder names (for example to your new naming scheme), you can do that with this little magic trick.
If you need to rename your current folder names (for example, to a new naming scheme), you can do so with a little "magic trick".
![!radarr-wrong-folder-name](images/radarr-wrong-folder-name.png)
Go to you movie overview
Simply go to the movie overview section.
`Movies`
On the top click on `Movie Editor`
Click on `Edit Movies` (at the top)
![!radarr-movie-editor](images/radarr-movie-editor.png)
After activating it you select the movie(s) from where you want to have the folder(s) to be renamed.
Once you are in "edit" mode, you can select the movie(s) whose folders you want to be renamed.
![!radarr-movie-editor-select](images/radarr-movie-editor-select.png)
1. If you want all your movie folders renamed to your new folder naming scheme you set earlier [HERE](/Radarr/Radarr-recommended-naming-scheme){:target="_blank" rel="noopener noreferrer"}.
1. Select the movie(s) from where you want to have the folder(s) to be renamed.
1. Choose the same `Root Folder`
1. If you want all your movie's folders to be renamed with the new naming scheme you set [HERE](/Radarr/Radarr-recommended-naming-scheme){:target="_blank" rel="noopener noreferrer"}.
1. Select the movie(s) that you want to have the folder(s) renamed.
1. At the bottom select `Edit`
A new popup will be shown:
![!radarr-edit-selected-movies](images/radarr-edit-selected-movies.png)
Choose the same (current) root folder for your selected movies, and choose `Apply Changes`.
![!radarr-movie-editor-move-files-yes](images/radarr-movie-editor-move-files-yes.png)
Select `Yes, Move the files`
You will get a warning popup where you will need to choose `Yes, Move the files`
!!! warning
If you have a large library, remote storage, cloud storage, or your path structure isn't well planned or doesn't support instant moves, then this process could take a while. Make sure you don't interrupt this process. If it stops before it's complete, it could result in quite the mess.
If you have a large library, use remote or cloud storage, or your path structure isn't well planned (or doesn't support instant moves) this could take a while.
**Make sure you don't interrupt this process.** If it stops before it has been completed, it could result in quite a mess.
Then Magic
Then, Magic!
![!radarr-correct-folder-name](images/radarr-correct-folder-name.png)
As you can see the folder has been renamed to the correct year following your naming scheme.
As you can see, the folder has now been renamed to the new/updated naming scheme.
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->
--8<-- "includes/support.md"

@ -4,8 +4,8 @@ In this guide I will try to explain how you can sync two (or more) Radarr/Sonarr
I'm going to show two different options on how you can setup your sync with two Radarr/Sonarr instances.
- Option 1: This option is best used if you want a 1:1 copy of your Radarr/Sonarr instances as it'll sync everything
- Option 2: This option is best used if you only want to have a subset of your library Movies/TV Shows as 4K/2160p (UHD) as it filters by quality profile
- Option 1: This option is best used if you want a 1:1 copy of your Radarr/Sonarr instances as it'll sync everything.
- Option 2: This option is best used if you only want to cherry pick which Movies/TV Shows you want as 4K/2160p (UHD).
!!! bug ""
I'm not going to explain how to set up two Radarr/Sonarr instances for your system, being it depends on how you have it installed/running. [Radarr Multiple Instance Information](https://wiki.servarr.com/radarr/installation#multiple-instances) and [Sonarr Multiple Instance Information](https://wiki.servarr.com/sonarr/installation#multiple-instances)
@ -160,6 +160,7 @@ You now only need to make use of `Sonarr 1`. When you got a TV show (or a movie
------
[^1]:
If you're interested in the 1080p streaming optimized quality profile you can join my [discord](https://trash-guides.info/discord) and get access to the Special Quality Profiles channel (access-to-sqp) by accepting the rules.
This is a special quality profile I created for people who are really interested in it.
@ -198,5 +199,4 @@ You now only need to make use of `Sonarr 1`. When you got a TV show (or a movie
- **Daily**: Episodes released daily or less frequently that use year-month-day (2017-05-25)
- **Standard**: Episodes released with SxxEyy pattern
{! include-markdown "../../../includes/support.md" !}
<!-- --8<-- "includes/support.md" -->
--8<-- "includes/support.md"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 KiB

After

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save