Skip to main content

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

Project description

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

PyPI version Discord GitHub Sponsorship

Quasarr pretends to be both Newznab Indexer and SABnzbd client. Therefore, do not try to use it with real usenet indexers or download clients. It simply does not know what NZB or torrent files are.

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 CAPTCHAs manually. Quasarr will confidently handle the rest.

Instructions


Quasarr

Tell Quasarr which sites to search for releases. It requires at least one valid source to start up.

  • By default, Quasarr does not know which sites to scrape for download links.
  • The setup will guide you through the process of providing valid hostnames for Quasarr to scrape.
  • Do not ask for help here if you do not know which hostnames to use. Picking them is solely your responsibility.
  • You may check sites like Pastebin for user‑submitted suggestions.

JDownloader

  1. Run JDownloader and connect it to the My JDownloader service.
  2. Provide your My‑JDownloader‑Credentials to Quasarr during the setup process.
  • Consider setting up a fresh JDownloader before you begin.
  • JDownloader must be running and available to Quasarr.
  • Quasarr will modify JDownloader’s settings so downloads can be handled by Radarr/Sonarr/LazyLibrarian.
  • If using Docker, ensure that JDownloader’s download path is available to Radarr/Sonarr/LazyLibrarian with exactly the same internal and external path mapping (matching only the external path is not enough).

Radarr / Sonarr

Set up Quasarr as a Newznab Indexer and SABnzbd Download Client:

  1. URL: Use the URL from the API Information section of the console output (or copy it from the Quasarr web UI).
  2. API Key: Use the API Key from the API Information section of the console output (or copy it from the Quasarr web UI).
  3. Leave all other settings at their defaults.

Important notice for Sonarr

  • Ensure all shows (including anime) are set to the Standard series type.
  • Quasarr will never find releases for shows set to Anime / Absolute.

LazyLibrarian

Important notice

  • This feature is experimental and may not work as expected.
  • Quasarr cannot help you with metadata issues, missing covers, or other LazyLibrarian problems.
  • Please report issues when one of your hostnames yields results through their website, but not in LazyLibrarian.

Set up Quasarr as a SABnzbd+ Downloader

  1. SABnzbd URL/Port: Use port and host parts from URL found in the API Information section of the console output (or copy it from the Quasarr web UI).
  2. SABnzbd API Key: Use the API Key from the API Information section of the console output (or copy it from the Quasarr web UI).
  3. SABnzbd Category: Use docs to ensure LazyLibrarian does not interfere with Radarr/Sonarr.
  4. Press Test SABnzbd to verify the connection, then Save changes.

Set up Quasarr as a Newznab Provider:

  1. Newznab URL: Use the URL from the API Information section of the console output (or copy it from the Quasarr web UI).
  2. Newznab API Use the API Key from the API Information section of the console output (or copy it from the Quasarr web UI).
  3. Press Test to verify the connection, then Save changes.

Fix the Importing settings:

  1. Check Enable OpenLibrary api for book/author information
  2. Select OpenLibrary below Primary Information Source
  3. Under Import languages add , Unknown (and for German users: , de, ger, de-DE).

Fix the Processing settings:

  1. Under Folders add the full Quasarr download path, typically /downloads/Quasarr/
  2. If you do not do this, processing after the download will fail.

Advanced Settings

To restrict results to a specific mirror, add the mirror name to the Newznab/indexer URL.

Example: Appending /api/dropbox/ will only return releases where dropbox is explicitly mentioned in a link.
Caution: If a mirror is not available at a hostname, the release will be ignored or the download will fail. Use this option carefully.

To see download status information in Radarr/Sonarr

  1. Open ActivityQueueOptions
  2. 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/LazyLibrarian 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. Most feature requests can be satisfied by:

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

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.16.2.tar.gz (190.9 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.16.2-py3-none-manylinux2014_aarch64.whl (217.2 kB view details)

Uploaded Python 3

quasarr-1.16.2-py3-none-any.whl (217.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for quasarr-1.16.2.tar.gz
Algorithm Hash digest
SHA256 0fafabbe0e4002547bc44dd43fbe490b5c1efed3ed03945d891940a9a50528ab
MD5 22f992bca920b8550c2e3ea70261fa12
BLAKE2b-256 2a7960e0bb5e53de0ca9407f05531c2e2efa8fbffc7f7c812c3240d079024cad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quasarr-1.16.2-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 73d7e86e56e284fa2dba1e4fa1427e3ca5fd2dfd967234ecc192277ca0f4cde0
MD5 5ab8493f64378b8847b9b440e3e5290f
BLAKE2b-256 def7fbfa8d0f46375ec46e5464379677e6b1a3f2dc6a08bc813ddaffa2798ed4

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for quasarr-1.16.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e32e1e62c2a925609b3325f38f71c5367b21ebe42d89d753686f895d63c794e5
MD5 3127351baecd95fd83bacb1702bafedc
BLAKE2b-256 b7a207472021f57d4ce77f7857e2efd270383e2c008718a70f71dd77c9411db2

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