GitHub Codecov Read the Docs GitHub release (latest by date) PyPI Downloads

What’s pycliarr

Python client for radarr and sonarr apis. The package provides python client and CLI to use in command line.

Documentation homepage

Usage

Sonarr CLI

pyvenv/bin/pycliarr -t "http://192.168.0.199:8989" -k "2ac2d8f667524da3bx1849e81dba5a84" -d sonarr get -i 65
pyvenv/bin/pycliarr -t "http://192.168.0.199:8989" -k "2ac2d8f667524da3bax849e81dba5a84" -d sonarr add -t "the walking dead"

Radarr CLI

pyvenv/bin/pycliarr -t "http://192.168.0.199:7878" -k "2ac2d8f667524da3bx1849e81dba5a84" -d radarr get -i 65
pyvenv/bin/pycliarr -t "http://192.168.0.199:7878" -k "2ac2d8f667524da3bax849e81dba5a84" -d radarr add -t "wonder woman"

Using radarr client

from pycliarr.api import RadarrCli
radarr_cli = RadarrCli('http://192.168.0.199:7878', '5f5e32qf3ff8463e9f3d2388af0fd3e8')
radarr_cli.add_movie(imdb_id="tt1234", quality=1)
movie = radarr_cli.get_movie(12)
print(movie.title)

Using sonarr client

from pycliarr.api import SonarrCli
sonarr_cli = SonarrCli('http://192.168.0.199:8989', '2ac2d8f667524da3bx1849e81dba5a84')
sonarr_cli.add_serie(imdb_id="tt1234", quality=1)
serie = sonarr_cli.get_serie(12)
print(serie.title)

CLI help

Clients:

pyvenv/bin/pycliarr --help
PyCliarr version 1.0.21
usage: pycliarr [-h] --host HOST --api-key API_KEY [--user USER] [--password PASSWORD] [--debug] {sonarr,radarr} ...

Radarr/Sonarr client

positional arguments:
  {sonarr,radarr}
    sonarr              use sonarr client
    radarr              use radarr client

optional arguments:
  -h, --help            show this help message and exit
  --host HOST, -t HOST  Host url, e.g 'http://192.168.0.1'
  --api-key API_KEY, -k API_KEY
                        API key, e.g '5f5e32xf3ff8463d9f1d2u88ef0fd3e8'
  --user USER, -u USER  Username if using basic authentication
  --password PASSWORD, -p PASSWORD
                        Password if using basic authentication
  --debug, -d           Enable debug logging

Radarr CLI:

pyvenv/bin/pycliarr radarr --help
PyCliarr version 1.0.21
usage: pycliarr radarr [-h]
                       {get,delete,add,edit,refresh,rescan,profiles,system-status,disk-space,queue,calendar,delete-queue,wanted,status,blocklist,delete-blocklist,notification,delete-notification,put-notification,tag,tag-detail,delete-tag,edit-tag,create-tag,tag-items,exclusion,delete-exclusion,create-exclusion,search-missing,root-folders}
                       ...

positional arguments:
  {get,delete,add,edit,refresh,rescan,profiles,system-status,disk-space,queue,calendar,delete-queue,wanted,status,blocklist,delete-blocklist,notification,delete-notification,put-notification,tag,tag-detail,delete-tag,edit-tag,create-tag,tag-items,exclusion,delete-exclusion,create-exclusion,search-missing,root-folders}
    get                 Get info on a of movie
    delete              Delete a movie
    add                 Add a movie from the imdb/tmdb id, or look for keywords
    edit                Push an updated item to the movie library
    refresh             Refresh movies
    rescan              Rescan movies
    profiles            Get list of quality profiles
    system-status       Get system status
    disk-space          Get disk space
    queue               Get current downloading queue
    calendar            Get events from calendar
    delete-queue        Get list of quality profiles
    wanted              List wanted/missing
    status              Get status of 1 or all currently running commands
    blocklist           Get blocklisted items
    delete-blocklist    Get list of quality profiles
    notification        Get notification(s)
    delete-notification
                        Delete the specified notification or all
    put-notification    Create the specified notification
    tag                 Get tag(s)
    tag-detail          Get tag(s) details
    delete-tag          Delete the specified tag
    edit-tag            Edit the specified tag
    create-tag          Create the specified tag
    tag-items           List items with specifed tag
    exclusion           Get exclusion(s)
    delete-exclusion    Delete the specified exclusion
    create-exclusion    Create the specified exclusion
    search-missing      Search missing movies
    root-folders        Get root folder list

optional arguments:
  -h, --help            show this help message and exit

Sonarr CLI:

pyvenv/bin/pycliarr sonarr --help
PyCliarr version 1.0.21
usage: pycliarr sonarr [-h]
                       {get,delete,add,refresh,rescan,get-episode,get-episode-file,delete-episode-file,profiles,system-status,disk-space,queue,calendar,delete-queue,wanted,status,blocklist,delete-blocklist,notification,delete-notification,put-notification,tag,tag-detail,delete-tag,edit-tag,create-tag,tag-items,exclusion,delete-exclusion,create-exclusion,search-missing,root-folders}
                       ...

positional arguments:
  {get,delete,add,refresh,rescan,get-episode,get-episode-file,delete-episode-file,profiles,system-status,disk-space,queue,calendar,delete-queue,wanted,status,blocklist,delete-blocklist,notification,delete-notification,put-notification,tag,tag-detail,delete-tag,edit-tag,create-tag,tag-items,exclusion,delete-exclusion,create-exclusion,search-missing,root-folders}
    get                 Get info on a of serie
    delete              Delete a serie
    add                 Add a serie from the tvdb id, or look for keywords
    refresh             Refresh series
    rescan              Rescan series
    get-episode         Get info on an episode
    get-episode-file    Get info on an episode file
    delete-episode-file
                        Get info on a of serie
    profiles            Get list of quality profiles
    system-status       Get system status
    disk-space          Get disk space
    queue               Get current downloading queue
    calendar            Get events from calendar
    delete-queue        Get list of quality profiles
    wanted              List wanted/missing
    status              Get status of 1 or all currently running commands
    blocklist           Get blocklisted items
    delete-blocklist    Get list of quality profiles
    notification        Get notification(s)
    delete-notification
                        Delete the specified notification or all
    put-notification    Create the specified notification
    tag                 Get tag(s)
    tag-detail          Get tag(s) details
    delete-tag          Delete the specified tag
    edit-tag            Edit the specified tag
    create-tag          Create the specified tag
    tag-items           List items with specifed tag
    exclusion           Get exclusion(s)
    delete-exclusion    Delete the specified exclusion
    create-exclusion    Create the specified exclusion
    search-missing      Search missing episods
    root-folders        Get root folder list

optional arguments:
  -h, --help            show this help message and exit

Installation

From pip:

pip pycliarr

From git:

git clone https://github.com/vche/pycliarr.git
pip install -e .

Development

Installing sources projects

Get the project and create the virtual env:

git clone https://github.com/vche/pycliarr.git
virtualenv pyvenv
. pyvenv/bin/activate
pip install -e .

Note: Entry points will be installed in pyvenv/bin, libs with pyvenv libs

Run tests

pip install tox
tox

If mypy fails due to missing import stubs:

.tox/checkers/bin/mypy --install-types

Generate documentation:

pip install sphinx sphinx_rtd_theme m2r2
./setup.py doc

In case new classes/modules are added, update the autodoc list:

rm  docs/sphinx_conf/source/*
sphinx-apidoc -f -o docs/sphinx_conf/source/ src/pycliarr --separate