Skip to main content

Subtitle Download Web Service for Sonarr

Project description

Dopplerr Subtitle Downloader

Build Status Docker Automated buil Pypi package PyPI Coverage Status Discord MIT licensed

Subtitle Download Web Service for Sonarr or Radarr. It uses Subliminal to search automatically for missing subtitles on download notification.

Limitations

  • only Sonarr notification

  • video filename should not have been renamed

  • season folder might exist, or not

  • all series should be on the same root directory

  • exact series title folder (no year, no extra)

Usage

The best usage is through the docker image.

Installation with Docker

Use my docker image:

docker create \
    --name dopplerr \
    -p 8086:8086 \
    -e PUID=<UID> \
    -e PGID=<GID> \
    -v <path/to/animes>:/animes \
    -v <path/to/movies>:/movies \
    -v <path/to/series>:/tv \
    -e DOPPLERR_SUBLIMINAL_LANGUAGES="fra,eng" \
    stibbons31/dopplerr

Mount your media directories in /. Typically, /animes and /tv are from Sonarr, and /movies from Radarr.

It is a good practice to run Sonarr and Radarr in their own container, so they also “see” their media in path such as /tv, /movies, /animes. Mount these volume with the same name in the dopplerr container. DOPPLERR_MAPPING allows developers to run dopplerr directly from their PC and allow a different naming conventions (for instance, /path/to/Movies is where the movies are stored, but in all containers see it mounted as /movies).

Parameters

The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. So, -p 8080:80 would expose port 80 from inside the container to be accessible from the host’s IP on port 8080 (Ex: http://192.168.x.x:8080).

Example of starting command line arguments:

  • -p 8086:8086 - the port webinterface

  • -v /path/to/anime:/anime - location of Anime library on disk

  • -v /path/to/movies:/movies - location of Movies library on disk

  • -v /path/to/series:/tv - location of TV library on disk

  • -e PGID=1000 - for GroupID. See below for explanation

  • -e PUID=100 - for UserID. See below for explanation

  • -e DOPPLERR_SUBLIMINAL_LANGUAGES=fra,eng - set wanted subtitles languages (mandatory)

  • -e DOPPLERR_GENERAL_VERBOSE=1 - set verbosity. 1=verbose, 0=silent (optional)

Developers might also use:

  • -e DOPPLERR_GENERAL_BASEDIR=/media - set media base directory (optional) (needs something like -v /path/to/anime:/media/anime and so on)

User / Group Identifiers

Sometimes when using data volumes (-v flags) permissions issues can arise between the host OS and the container. We avoid this issue by allowing you to specify the user PUID and group PGID. Ensure the data volume directory on the host is owned by the same user you specify and it will “just work” (TM).

In this instance PUID=1001 and PGID=1001. To find yours use id user as below:

$ id <dockeruser>
uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)

Wanted subtitle languages

Use a comma-separated list of 3-letter language descriptors you want Subliminal to try to download them.

Example:

DOPPLERR_SUBLIMINAL_LANGUAGES=fra,eng

Descriptors are ISO-639-3 names of the language. See the official Babelfish table to find your prefered languages.

Pipy Installation

Create a dedicated virtual environment and install it properly with the following commands:

$ pip3 install dopplerr

Note: One should NEVER install a Python application directly in your system using sudo pip3 install .... You do not want to mess your startup scripts or any other python application that came well packaged by the maintainers of your distribution.

Always use a Virtualenv. To install an application system-wide, use your distribution’s packet manager (apt / yum / …).

If you do not have this option, install a Python package user-wide (pip3 install --user).

Other Note: while using pip/pip3 to install from pre-built packages (“distribution packages”) from Pypi is the official method, please note this project uses pipenv for development, and uses a Pipfile as primary source of dependencies definition. requirements.txt file is automatically generated on change so installing through pip3 from the GitHub source should work even if it not the official installation method:

pip3 install --user git+http://github.com/Stibbons/dopplerr#egg=dopplerr

Be aware with this command you retrieve the latest code, which may be broken.

Radarr/Sonarr Configuration

Go in Settings to configure a “Connect” WebHook:

  • Settings > Connect > add WebHook notification

  • Select On Download and On Upgrade

  • URL: http://<ip address>:8086/api/v1/notify/sonarr

    or

    URL: http://<ip address>:8086/api/v1/notify/radarr

  • Method: POST

Two READMEs ?

There is a little trick to know about READMEs:

  • Docker Hub does not render README written in restructuredText correctly

  • Pypi does not render README written in Markdown correctly

So, a restructuredText version of the README is created from README.md on upload to Pypi. Simple. So, when updating README.md, do not forget to regenerate README.rst using make readme.

Contributing

Check out the source code

git clone

Install requirement system-level dependencies with (or adapt accordingly):

$ sudo ./bootstrap-system.sh

System dependencies:

  • git

  • make

  • pandoc

  • pip

  • pipenv

This project uses pipenv to jump seamlessly into a virtualenv.

Setup your development environment with:

$ make dev

Unit Tests with:

$ make test-unit

or run it live with

$ make run-local

Activate the environment (to start your editor from, for example):

$ make shell

Publishing new version

Please note that much part is automatized, for example the publication to Pypi is done automatically by Travis on successful tag build)

Test building Wheel package with:

$ make release wheels

Create a release: create a tag with a Semver syntax.

$ # ensure everything is committed
$ git tag 1.2.3
$ make release
$ git push --tags

Optionally you can tag code locally and push to GitHub. make release is also executed during the Travis build, so if there is any files changed during the build (ex: README.rst), it will be automatically done and so the Pypi package will be coherent. Do not retag if the README has been updated on GitHub, it has been properly done in the Wheel/Source Packages on Pypi. So, no stress.

On successful travis build on the Tag, your Pypi package will be automatically updated.

Same, on Tag, a Docker tag is also automatically created.

Note:

According to PBR, alpha versions are to be noted x.y.z.a1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dopplerr-0.5.2.tar.gz (48.9 kB view details)

Uploaded Source

Built Distribution

dopplerr-0.5.2-py2.py3-none-any.whl (55.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file dopplerr-0.5.2.tar.gz.

File metadata

  • Download URL: dopplerr-0.5.2.tar.gz
  • Upload date:
  • Size: 48.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for dopplerr-0.5.2.tar.gz
Algorithm Hash digest
SHA256 eb74760cb9a02f7ffda9f1a82bc53885027fce55b1dace5f71fb6ef7b22bb21d
MD5 e437d22d3f5b3a1a3c499f947204e2e5
BLAKE2b-256 45f637486147ee58510fc1a374eee3a01a9f41c980178ab0705bde59ca055e96

See more details on using hashes here.

File details

Details for the file dopplerr-0.5.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for dopplerr-0.5.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1fe17e714b47500a054e12f9b674a6ba7bce04c7aefe813c8131a8041b73e46c
MD5 4ef0792825bd3b335a6f8065dfa2b651
BLAKE2b-256 a8d0180eccd57c694dd0352df146587b5797bbb371ea27fdd6b62e91dac178de

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page