Skip to main content

Full template for python web projects with Docker, GitHub Actions, PyPI, and more.

Project description

Quasarr connects JDownloader with Radarr and Sonarr. It also decrypts links protected by CAPTCHAs.

PyPI version Discord GitHub Sponsorship

Quasarr poses as a Newznab Indexer and a SABnzbd client. It will thus never work in parallel with a real NZB indexer and download client set up. Torrents are unaffected. To still use NZB indexers, you must set fixed download clients in the advanced indexer settings for Radarr/Sonarr.

Quasarr includes a solution to quickly and easily decrypt protected links. Active Sponsors get access to SponsorsHelper to do so automatically. Alternatively, follow the link from the console output (or discord notification) to solve the CAPTCHA manually. Quasarr will confidently handle the rest.

Instructions

  • Set up at least one hostname for Quasarr to use
    • Chose your own or use the HOSTNAMES variable to provide a list of hostnames.
    • This project will not condone nor provide you with hostnames. Search Google, Pastebin, etc. for suggestions.
    • Always redact hostnames when creating issues in this repo.
    • Quasarr will become available once at least one suitable hostname is set.
  • Provide your My-JDownloader-Credentials
    • Consider setting up a fresh JDownloader before you begin.
    • JDownloader must be running and available to Quasarr.
    • Quasarr will modify the settings of JDownloader so downloads can be properly handled by Radarr/Sonarr.
    • If using docker, make extra sure that JDownloader's download path is available to Radarr/Sonarr with the exact same internal and external path mapping. Just matching the external path is not enough.
  • Set up Quasarr as Newznab Indexer and SABnzbd Download Client in Radarr/Sonarr
    • Use the URL from the API Information section of the console output (or copy it from the Quasarr web UI)
    • Use the API Key from the API Information section of the console output (or copy it from the Quasarr web UI)
    • Leave all other settings by default.
    • If you prefer to only get releases for a specific mirror, add the mirror name to the API path in the advanced indexer settings.
      • Example: /api/dropbox/ results will only return releases where dropbox is explicitly mentioned in a link.
      • This means that if a mirror is not available at a hostname, the release is ignored or the download will fail. So use this option with caution.
  • To see download status information
    • Open ActivityQueueOptions in Radarr/Sonarr
    • Enable Release Title

Docker

It is highly recommended to run the latest docker image with all optional variables set.

docker run -d \
  --name="Quasarr" \
  -p port:8080 \
  -v /path/to/config/:/config:rw \
  -e 'INTERNAL_ADDRESS'='http://192.168.0.1:8080' \
  -e 'EXTERNAL_ADDRESS'='https://foo.bar/' \
  -e 'DISCORD'='https://discord.com/api/webhooks/1234567890/ABCDEFGHIJKLMN' \
  -e 'HOSTNAMES'='https://pastebin.com/raw/eX4Mpl3'
  -e 'SILENT'='True' \
  -e 'DEBUG'='' \
  ghcr.io/rix1337/quasarr:latest
  • INTERNAL_ADDRESS is required so Radarr/Sonarr can reach Quasarr. Must include port!
  • EXTERNAL_ADDRESS is optional and helpful if using a reverse proxy. Always protect external access with basic auth!
  • DISCORD is optional and must be a valid Discord webhook URL.
  • HOSTNAMES is optional and allows skipping the manual hostname step during setup.
    • Must be a publicly available HTTP or HTTPs link
    • Must be a raw .ini / text file (not HTML or JSON)
    • Must contain at least one valid Hostname per line ab = xyz
  • SILENT is optional and silences all discord notifications except for error messages from SponsorsHelper if True.
  • DEBUG is optional and enables debug logging if True.

Manual setup

Use this only in case you can't run the docker image.

pip install quasarr

  • Requires Python 3.12 or later
  --port=8080
  --discord=https://discord.com/api/webhooks/1234567890/ABCDEFGHIJKLMN
  --external_address=https://foo.bar/
  --hostnames=https://pastebin.com/raw/eX4Mpl3
  • --discord see DISCORDdocker variable
  • --external_address see EXTERNAL_ADDRESSdocker variable
  • --hostnames see HOSTNAMESdocker variable

Philosophy

Complexity is the killer of small projects like this one. It must be fought at all cost!

We will not waste precious time on features that will slow future development cycles down. It is by choice, that you will not find settings or filtering options in Quasarr.

Most feature requests can be satisfied by:

  • Existing settings in Radarr/Sonarr
  • Existing settings in JDownloader
  • Existing tools from the *arr ecosystem that integrate directly with Radarr/Sonarr

If you want to edit the hostname selection after the initial setup, you can do so by editing or deleting Quasarr.ini.

Roadmap

  • Assume there are zero known issues unless you find one or more open issues in this repository.
  • Still having an issue? Provide a detailed report here!
  • There are no hostname integrations in active development unless you see an open pull request here.
  • Pull requests are welcome. Especially for popular hostnames.
    • Always reach out on Discord before starting work on a new feature to prevent waste of time.
    • Please follow the existing code style and project structure.
    • Anti-bot measures must be circumvented fully by Quasarr. Thus you will need to provide a working solution for new CAPTCHA types by integrating it in the Quasarr Web UI.
    • Please provide proof of functionality (screenshots/examples) when submitting your pull request.

SponsorsHelper

The SponsorsHelper is a Docker image that automatically solves CAPTCHAs and decrypts links for Quasarr.

The process strictly requires an account token with credit at DeathByCaptcha.

The image is only available to active sponsors (hence the name).

Access is automatically granted via GitHub:

Github Sponsorship

Docker Login

Generate GitHub Token

  1. Open the GitHub token settings.
  2. Select New personal access token (classic).
  3. Fill in the note, e.g., SponsorsHelper.
  4. Enable the "read:packages" scope.
  5. Create and use the token for login as GITHUB_TOKEN below:

Login

docker login https://ghcr.io -u USERNAME -p GITHUB_TOKEN

USERNAME is your GitHub username. GITHUB_TOKEN is the token you created above.

Starting SponsorsHelper

Without logging in, it is not possible to download the image!

docker run -d \
    --name='SponsorsHelper' \
    -e 'QUASARR_URL'='http://192.168.0.1:8080' \
    -e 'DEATHBYCAPTCHA_TOKEN'='2FMum5zuDBxMmbXDIsADnllEFl73bomydIpzo7...' \
    'ghcr.io/rix1337-sponsors/docker/helper:latest'

Required Parameters

  • -e 'QUASARR_URL' The local URL of Quasarr - e.g., http://192.168.0.1:8080 (should match the INTERNAL_ADDRESS parameter from above)
  • -e 'DEATHBYCAPTCHA_TOKEN' The account token from DeathByCaptcha - e.g., 2FMum5zuDBxMmbXDIsADnllEFl73bomydIpzo7...aBc

Development Setup for Pull Requests

To test your changes before submitting a pull request:

Run Quasarr with the --internal_address parameter:

python Quasarr.py --internal_address=http://<host-ip>:<port>

Replace <host-ip> and <port> with the scheme, IP, and port of your host machine. The --internal_address parameter is mandatory.

Start the required services using the dev-services-compose.yml file:

CONFIG_VOLUMES=/path/to/config docker-compose -f docker/dev-services-compose.yml up

Replace /path/to/config with your desired configuration location. The CONFIG_VOLUMES environment variable is mandatory.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

quasarr-1.5.9.tar.gz (124.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

quasarr-1.5.9-py3-none-manylinux2014_aarch64.whl (142.6 kB view details)

Uploaded Python 3

quasarr-1.5.9-py3-none-any.whl (142.6 kB view details)

Uploaded Python 3

File details

Details for the file quasarr-1.5.9.tar.gz.

File metadata

  • Download URL: quasarr-1.5.9.tar.gz
  • Upload date:
  • Size: 124.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for quasarr-1.5.9.tar.gz
Algorithm Hash digest
SHA256 93d5554dfb2be727b94eb40b7c0c6e79e2cfa7ceee1c165311bc2cddf8db20b1
MD5 21a9f42939a7952930bd2c27898b7af9
BLAKE2b-256 eb03014f48af5206c7a4d99b95ef75f50efceda7a5b3ec27284098ed4336b3ca

See more details on using hashes here.

File details

Details for the file quasarr-1.5.9-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for quasarr-1.5.9-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 98734ff64d209a108117c2067632d16ca1a985918c1457f8a1b868cc58f3ae83
MD5 a9928f52404b7166d4aea05b3e1e5b92
BLAKE2b-256 f37d1895de777adb297a32c051d5259ececcde04dd72f9f73038462e43e4808f

See more details on using hashes here.

File details

Details for the file quasarr-1.5.9-py3-none-any.whl.

File metadata

  • Download URL: quasarr-1.5.9-py3-none-any.whl
  • Upload date:
  • Size: 142.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for quasarr-1.5.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6919fbdcae00ac352badbd3b8e1e7205a32ffc74d3d1351c89bb223be43828f9
MD5 f65cd0742671404442b68bd482c1eb1c
BLAKE2b-256 0e2429f97ca8593554338d06779cc0dbd960cf69e511b273427ba7fe00d15a1d

See more details on using hashes here.

Supported by

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