Robert Dailey
2485a587b0
|
4 years ago | |
---|---|---|
.idea | 4 years ago | |
.vscode | 4 years ago | |
sonarr_api_examples | 4 years ago | |
src | 4 years ago | |
.gitattributes | 4 years ago | |
.gitignore | 4 years ago | |
.markdownlint.json | 4 years ago | |
README.md | 4 years ago |
README.md
TRaSH Guide Updater Script
Automatically mirror TRaSH guides to your Sonarr/Radarr instance.
NOTICE: This is a work-in-progress Python script
Features
Features list will continue to grow. See the limitations & roadmap section for more details!
- Sonarr Release Profiles
- Preferred, Must Not Contain, and Must Contain lists from guides are reflected completely in corresponding fields in release profiles in Sonarr.
- "Include Preferred when Renaming" is properly checked/unchecked depending on explicit mention of this in the guides.
- Profiles get created if they do not exist, or updated if they already exist. Profiles get a unique name based on the guide and this name is used to find them in subsequent runs.
- Tags can be added to any updated or created profiles.
- Ability to convert preferred with negative scores to "Must not contain" terms.
- Sonarr Quality Definitions
- Anime and Non-Anime quality definitions are now synced to Sonarr
- Radarr Quality Definition can be synced (there's only one for now).
- Configuration support using YAML
- Many command line arguments can instead be provided in YAML configuration to reduce the redundancy of using the CLI.
Requirements
- Python 3
- The following packages installed with
pip
:requests
packaging
pyyaml
- For Sonarr updates, you must be running version
3.0.4.1098
or greater.
To install all of the above required packages, here's a convenient copy & paste one-liner:
pip install requests packaging pyyaml
Getting Started
The only script you will need to be using is src/trash.py
. If you've cloned my repository, simply
cd
to the src
directory so you can run trash.py
directly:
PS E:\code\TrashUpdater\src> .\trash.py -h
usage: trash.py [-h] {profile,quality} ...
Automatically mirror TRaSH guides to your Sonarr/Radarr instance.
optional arguments:
-h, --help show this help message and exit
subcommands:
Operations specific to different parts of the TRaSH guides
{profile,quality}
profile Pages of the guide that define profiles
quality Pages in the guide that provide quality definitions
The command line is structured into a series of subcommands that each handle a different area of the
guides. For example, you use a separate subcommand to sync quality definitions than you do release
profiles. Simply run trash.py [subcommand] -h
to get help for [subcommand]
, which can be any
supported subcommand listed in the top level help output.
Examples
Some command line examples to show you how to use the script for various tasks. Note that most command line options were generated on a Windows environment, so you will see OS-specific syntax (e.g. backslashes). Obviously Python works on Linux systems too, so adjust the examples as needed for your platform.
To preview what release profile information is parsed out of the Anime profile guide:
.\trash.py profile sonarr:anime --preview
To sync the anime release profiles to your Sonarr instance:
.\trash.py profile sonarr:anime --base-uri http://localhost:8989 --api-key a95cc792074644759fefe3ccab544f6e
To preview the Anime quality definition data parsed out of the Quality Definitions (file sizes) page of the TRaSH guides:
.\trash.py quality sonarr:anime --preview
Sync the non-anime quality definition to Sonarr:
.\trash.py quality sonarr:non-anime --base-uri http://localhost:8989 --api-key a95cc792074644759fefe3ccab544f6e
Configuration File
By default, trash.py
will look for a configuration file named trash.yml
in the same directory as
the script itself. This configuration file may be used to store your Sonarr and Radarr Base URI and
API Key, which should make using the command line interface a bit less clunky.
sonarr:
base_uri: http://localhost:8989
api_key: a95cc792074644759fefe3ccab544f6e
profile:
- type: anime
tags:
- anime
- type: web-dl
tags:
- tv
Note that this file is not required to be present. If it is not present, then you will need to set
respective parameters using the equivalent command line arguments (e.g. --base-uri
and
--api-key
), as needed.
Lastly, there's a --config-file
argument you can use to point to your own YAML config file if you
don't like the where the default one is located.
Profile Settings
-
profile
Provide a list of settings used per each type of release profile supported in the guide (e.g.web-dl
,anime
).-
type
Type profile type to apply the settings to, such as adding new tags. The list of supported profile types can be found by doingtrash.py profile -h
. Each valid choice listed under thetype
argument can be used, just strip thesonarr:
prefix. -
tags
A list of tags to apply to the profile. Functions exactly as it would if you used the--tags
option to provide this list on the command line.
-
Important Notices
Please be aware that this script relies on a deterministic and consistent structure of the TRaSH Guide markdown files. I'm in the process of creating a set of rules/guidelines to reduce the risk of the guide breaking this script, but in the meantime the script may stop working at any time due to guide updates. I will do my best to fix them in a timely manner. Reporting such issues would be appreciated and will help identify issues more quickly.
Limitations
This script is a work in progress. At the moment, it only supports the following features and/or has the following limitations:
- Radarr custom formats are not supported yet (coming soon).
- Multiple scores on the same line are not supported. Only the first is used.
Roadmap
In addition to the above limitations, the following items are planned for the future.
- Better and more polished error handling (it's pretty minimal right now)
- Implement some sort of guide versioning (e.g. to avoid updating a release profile if the guide did not change).
Development / Contributing
Prerequisites
Some additional packages are required to run the unit tests. All can be installed via pip
:
pytest
pytest-mock
To install all of the above required packages, here's a convenient copy & paste one-liner:
pip install pytest pytest-mock