Automatically sync TRaSH guides to your Sonarr and Radarr instances
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Robert Dailey b7f34c3b52
Print help when run with no arguments
3 years ago
.idea Sonarr profile tags support in YAML config 3 years ago
.vscode Modularize python code into a package 3 years ago
sonarr_api_examples Sonarr quality definition support 3 years ago
src Print help when run with no arguments 3 years ago
.gitattributes Initial Commit 3 years ago
.gitignore Add configuration file support 3 years ago
.markdownlint.json New markdown lint JSON file 3 years ago
README.md Radarr quality definition support 3 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 doing trash.py profile -h. Each valid choice listed under the type argument can be used, just strip the sonarr: 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