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.
Quasarr pretends to be both Newznab Indexer and SABnzbd client. Therefore, do not try to use it with real usenet
indexers. It simply does not know what NZB files are.
Quasarr includes a solution to quickly and easily decrypt protected links. Active monthly 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. Some CAPTCHA types require Tampermonkey to be installed in your browser.
Instructions
- Set up and run FlareSolverr 3.
- Set up and run JDownloader 2.
- Follow the next steps.
FlareSolverr
- Ensure your running FlareSolverr is reachable by Quasarr.
- Provide your FlareSolverr URL to Quasarr during the setup process.
- The full URL must include the version path, e.g.,
http://192.168.1.1:8191/v1.
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
- Ensure your running JDownloader is connected to the My JDownloader service.
- 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:
- URL: Use the
URLfrom the API Information section of the console output (or copy it from the Quasarr web UI). - API Key: Use the
API Keyfrom the API Information section of the console output (or copy it from the Quasarr web UI). - 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
- SABnzbd URL/Port: Use port and host parts from
URLfound in the API Information section of the console output (or copy it from the Quasarr web UI). - SABnzbd API Key: Use the
API Keyfrom the API Information section of the console output (or copy it from the Quasarr web UI). - SABnzbd Category: Use
docsto ensure LazyLibrarian does not interfere with Radarr/Sonarr. - Press
Test SABnzbdto verify the connection, thenSave changes.
Set up Quasarr as a Newznab Provider:
- Newznab URL: Use the
URLfrom the API Information section of the console output (or copy it from the Quasarr web UI). - Newznab API Use the
API Keyfrom the API Information section of the console output (or copy it from the Quasarr web UI). - Press
Testto verify the connection, thenSave changes.
Fix the Importing settings:
- Check
Enable OpenLibrary api for book/author information - Select
OpenLibrarybelowPrimary Information Source - Under
Import languagesadd, Unknown(and for German users:, de, ger, de-DE).
Fix the Processing settings:
- Under
Foldersadd the full Quasarr download path, typically/downloads/Quasarr/ - 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 wheredropboxis 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
- Open
Activity→Queue→Options - 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'='' \
-e 'TZ'='Europe/Berlin' \
ghcr.io/rix1337/quasarr:latest
INTERNAL_ADDRESSis required so Radarr/Sonarr/LazyLibrarian can reach Quasarr. Must include port!EXTERNAL_ADDRESSis optional and helpful if using a reverse proxy. Always protect external access with basic auth!DISCORDis optional and must be a valid Discord webhook URL.HOSTNAMESis optional and allows skipping the manual hostname step during setup.- Must be a publicly available
HTTPorHTTPslink - Must be a raw
.ini/ text file (not HTML or JSON) - Must contain at least one valid Hostname per line
ab = xyz
- Must be a publicly available
SILENTis optional and silences all discord notifications except for error messages from SponsorsHelper ifTrue.DEBUGis optional and enables debug logging ifTrue.TZis optional, wrong timezone can cause HTTPS/SSL issues
Manual setup
Use this only in case you can't run the docker image.
pip install quasarr
- Requires Python 3.12 or later
- Requires FlareSolverr
- Requires JDownloader 2 with My JDownloader
--port=8080
--discord=https://discord.com/api/webhooks/1234567890/ABCDEFGHIJKLMN
--external_address=https://foo.bar/
--hostnames=https://pastebin.com/raw/eX4Mpl3
--discordseeDISCORDdocker variable--external_addressseeEXTERNAL_ADDRESSdocker variable--hostnamesseeHOSTNAMESdocker 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
SponsorsHelper is a Docker image that solves CAPTCHAs and decrypts links for Quasarr.
Image access is limited to active monthly GitHub sponsors.
🔑 GitHub Token Setup
- Start your sponsorship first.
- Open GitHub Classic Token Settings
- Name it (e.g.,
SponsorsHelper) and choose unlimited expiration - Enable these scopes:
read:packagesread:userread:org
- Click Generate token and copy it for the next steps
🐋 Docker Login
echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
USERNAME→ your GitHub usernameGITHUB_TOKEN→ the token you just created
⚠️ Before logging in, the image will not download.
▶️ Run SponsorsHelper
docker run -d \
--name='SponsorsHelper' \
-e 'QUASARR_URL'='http://192.168.0.1:8080' \
-e 'DEATHBYCAPTCHA_TOKEN'='2FMum5zuDBxMmbXDIsADnllEFl73bomydIpzo7...' \
-e 'GITHUB_TOKEN'='ghp_123.....456789' \
-e 'FLARESOLVERR_URL'='http://10.10.0.1:8191/v1' \
-e 'NX_USER'='your_nx_username' \
-e 'NX_PASS'='your_nx_password' \
-e 'JUNKIES_USER'='your_junkies_username' \
-e 'JUNKIES_PASS'='your_junkies_password' \
-e 'JUNKIES_HOSTER'='your_desired_hoster' \
ghcr.io/rix1337-sponsors/docker/helper:latest
Required Parameters
QUASARR_URL→ Local URL of QuasarrDEATHBYCAPTCHA_TOKEN→ DeathByCaptcha account tokenGITHUB_TOKEN→ Classic GitHub PAT with the scopes listed aboveFLARESOLVERR_URL→ Local URL of FlareSolverr - required!NX_USER/NX_PASS→ NX account credentialsJUNKIES_USER/JUNKIES_PASS→ Junkies account credentialsJUNKIES_HOSTER→ Preferred hoster for Junkies links
⚠️ Without a valid GitHub token linked to an active sponsorship, the image will not run.
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quasarr-1.26.2.tar.gz.
File metadata
- Download URL: quasarr-1.26.2.tar.gz
- Upload date:
- Size: 617.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a146f35e09a8a9c228878be9f6d3a5b02567eef199a8795c7853968eff7b7e80
|
|
| MD5 |
5322d8f650b6c74ed091bb0905a1ef88
|
|
| BLAKE2b-256 |
b351cfc078c289c5e22cb12e3abdca7f35923da653b2b90f890dbc723495e806
|
File details
Details for the file quasarr-1.26.2-py3-none-manylinux2014_aarch64.whl.
File metadata
- Download URL: quasarr-1.26.2-py3-none-manylinux2014_aarch64.whl
- Upload date:
- Size: 658.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c2f6bb2ad7ecfa03a2d87d4f6870a3cf9e0665ebc2913d2bdef5a29145e7520
|
|
| MD5 |
c90f881018f9e38aaf463b9265f94459
|
|
| BLAKE2b-256 |
dca195af8b2ee369b9c5f9b0a338f8b91f5537b52ee7f477c6515f1534a15886
|
File details
Details for the file quasarr-1.26.2-py3-none-any.whl.
File metadata
- Download URL: quasarr-1.26.2-py3-none-any.whl
- Upload date:
- Size: 658.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be888d0d351e536f58013f2fe80961f3e460cf427e75925c00385d00d481143a
|
|
| MD5 |
72481607e3a30eab9ac6eb26e9d0ab47
|
|
| BLAKE2b-256 |
a667fd1649d7ce417b8e11cc7af7bb800052972eac686874cb33a6ffe41d3110
|