quasarr 1.26.7__tar.gz → 1.28.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of quasarr might be problematic. Click here for more details.

Files changed (86) hide show
  1. {quasarr-1.26.7 → quasarr-1.28.0}/PKG-INFO +86 -94
  2. {quasarr-1.26.7 → quasarr-1.28.0}/README.md +85 -93
  3. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/__init__.py +44 -155
  4. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/api/__init__.py +1 -1
  5. quasarr-1.28.0/quasarr/api/config/__init__.py +327 -0
  6. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/linkcrypters/al.py +8 -2
  7. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/al.py +7 -0
  8. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/wd.py +12 -2
  9. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/cloudflare.py +20 -1
  10. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/sessions/al.py +51 -0
  11. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/sessions/dd.py +8 -1
  12. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/sessions/dl.py +34 -23
  13. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/sessions/nx.py +8 -1
  14. quasarr-1.28.0/quasarr/providers/utils.py +190 -0
  15. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/version.py +1 -1
  16. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/al.py +0 -2
  17. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/storage/config.py +3 -0
  18. quasarr-1.28.0/quasarr/storage/setup.py +1050 -0
  19. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr.egg-info/PKG-INFO +86 -94
  20. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr.egg-info/SOURCES.txt +1 -0
  21. quasarr-1.26.7/quasarr/api/config/__init__.py +0 -23
  22. quasarr-1.26.7/quasarr/storage/setup.py +0 -536
  23. {quasarr-1.26.7 → quasarr-1.28.0}/LICENSE +0 -0
  24. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/api/arr/__init__.py +0 -0
  25. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/api/captcha/__init__.py +0 -0
  26. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/api/sponsors_helper/__init__.py +0 -0
  27. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/api/statistics/__init__.py +0 -0
  28. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/__init__.py +0 -0
  29. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/linkcrypters/__init__.py +0 -0
  30. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/linkcrypters/filecrypt.py +0 -0
  31. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/linkcrypters/hide.py +0 -0
  32. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/packages/__init__.py +0 -0
  33. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/__init__.py +0 -0
  34. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/by.py +0 -0
  35. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/dd.py +0 -0
  36. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/dj.py +0 -0
  37. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/dl.py +0 -0
  38. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/dt.py +0 -0
  39. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/dw.py +0 -0
  40. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/he.py +0 -0
  41. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/mb.py +0 -0
  42. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/nk.py +0 -0
  43. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/nx.py +0 -0
  44. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/sf.py +0 -0
  45. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/sj.py +0 -0
  46. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/sl.py +0 -0
  47. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/downloads/sources/wx.py +0 -0
  48. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/__init__.py +0 -0
  49. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/html_images.py +0 -0
  50. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/html_templates.py +0 -0
  51. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/imdb_metadata.py +0 -0
  52. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/log.py +0 -0
  53. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/myjd_api.py +0 -0
  54. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/notifications.py +0 -0
  55. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/obfuscated.py +0 -0
  56. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/sessions/__init__.py +0 -0
  57. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/shared_state.py +0 -0
  58. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/statistics.py +0 -0
  59. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/providers/web_server.py +0 -0
  60. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/__init__.py +0 -0
  61. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/__init__.py +0 -0
  62. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/by.py +0 -0
  63. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/dd.py +0 -0
  64. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/dj.py +0 -0
  65. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/dl.py +0 -0
  66. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/dt.py +0 -0
  67. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/dw.py +0 -0
  68. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/fx.py +0 -0
  69. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/he.py +0 -0
  70. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/mb.py +0 -0
  71. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/nk.py +0 -0
  72. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/nx.py +0 -0
  73. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/sf.py +0 -0
  74. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/sj.py +0 -0
  75. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/sl.py +0 -0
  76. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/wd.py +0 -0
  77. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/search/sources/wx.py +0 -0
  78. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/storage/__init__.py +0 -0
  79. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr/storage/sqlite_database.py +0 -0
  80. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr.egg-info/dependency_links.txt +0 -0
  81. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr.egg-info/entry_points.txt +0 -0
  82. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr.egg-info/not-zip-safe +0 -0
  83. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr.egg-info/requires.txt +0 -0
  84. {quasarr-1.26.7 → quasarr-1.28.0}/quasarr.egg-info/top_level.txt +0 -0
  85. {quasarr-1.26.7 → quasarr-1.28.0}/setup.cfg +0 -0
  86. {quasarr-1.26.7 → quasarr-1.28.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quasarr
3
- Version: 1.26.7
3
+ Version: 1.28.0
4
4
  Summary: Quasarr connects JDownloader with Radarr, Sonarr and LazyLibrarian. It also decrypts links protected by CAPTCHAs.
5
5
  Home-page: https://github.com/rix1337/Quasarr
6
6
  Author: rix1337
@@ -44,97 +44,121 @@ Alternatively, follow the link from the console output (or discord notification)
44
44
  Quasarr will confidently handle the rest. Some CAPTCHA types require [Tampermonkey](https://www.tampermonkey.net/) to be installed in your browser.
45
45
 
46
46
  # Instructions
47
- 1. Set up and run [FlareSolverr 3](https://github.com/FlareSolverr/FlareSolverr).
48
- 2. Set up and run [JDownloader 2](https://jdownloader.org/download/index).
49
- 3. Follow the next steps.
47
+
48
+ # Instructions
49
+
50
+ 1. Set up and run [JDownloader 2](https://jdownloader.org/download/index)
51
+ 2. Configure the integrations below
52
+ 3. (Optional) Set up [FlareSolverr 3](https://github.com/FlareSolverr/FlareSolverr) for sites that require it
53
+
54
+ > **Finding your Quasarr URL and API Key**
55
+ > Both values are shown in the console output under **API Information**, or in the Quasarr web UI.
50
56
 
51
57
  ---
52
58
 
53
- ## FlareSolverr
54
- 1. Ensure your running FlareSolverr is reachable by Quasarr.
55
- 2. Provide your FlareSolverr URL to Quasarr during the setup process.
56
- 3. The full URL must include the version path, e.g., `http://192.168.1.1:8191/v1`.
59
+ ## FlareSolverr (Optional)
60
+
61
+ FlareSolverr is **optional** but **required for some sites** (e.g., AL) that use Cloudflare protection. You can skip FlareSolverr during setup and configure it later via the web UI.
62
+
63
+ If using FlareSolverr, provide your URL including the version path:
64
+ ```
65
+ http://192.168.1.1:8191/v1
66
+ ```
67
+
68
+ > **Note:** Sites requiring FlareSolverr will show a warning in the console when it's not configured.
57
69
 
58
70
  ---
59
71
 
60
72
  ## Quasarr
61
73
 
62
- Tell Quasarr which sites to search for releases. It requires at least one valid source to start up.
74
+ > ⚠️ Quasarr requires at least one valid hostname to start. It does not provide or endorse any specific sources, but community-maintained lists are available:
75
+
76
+ 🔗 **[quasarr-hostnames.pages.dev](https://quasarr-hostnames.pages.dev)** — third-party guide for finding hostnames
63
77
 
64
- > - By default, Quasarr does **not** know which sites to scrape for download links.
65
- > - The setup will guide you through the process of providing valid hostnames for Quasarr to scrape.
66
- > - Do **not** ask for help here if you do not know which hostnames to use. Picking them is solely your responsibility.
67
- > - You may check sites like [Pastebin](https://pastebin.com/search?q=hostnames+quasarr) for user‑submitted suggestions.
78
+ 📋 Alternatively, browse community suggestions via [pastebin search](https://pastebin.com/search?q=hostnames+quasarr) (login required).
68
79
 
69
80
  ---
70
81
 
71
82
  ## JDownloader
72
83
 
73
- 1. Ensure your running JDownloader is connected to the My JDownloader service.
74
- 2. Provide your [My‑JDownloader‑Credentials](https://my.jdownloader.org) to Quasarr during the setup process.
84
+ > ⚠️ If using Docker:
85
+ > JDownloader's download path must be available to Radarr/Sonarr/LazyLibrarian with **identical internal and external path mappings**!
86
+ > Matching only the external path is not sufficient.
87
+
88
+ 1. Start and connect JDownloader to [My JDownloader](https://my.jdownloader.org)
89
+ 2. Provide your My JDownloader credentials during Quasarr setup
90
+
91
+ <details>
92
+ <summary>Fresh install recommended</summary>
93
+
94
+ Consider setting up a fresh JDownloader instance. Quasarr will modify JDownloader's settings to enable Radarr/Sonarr/LazyLibrarian integration.
75
95
 
76
- > - Consider setting up a fresh JDownloader before you begin.
77
- > - JDownloader must be running and available to Quasarr.
78
- > - Quasarr will modify JDownloader’s settings so downloads can be handled by Radarr/Sonarr/LazyLibrarian.
79
- > - 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).
96
+ </details>
80
97
 
81
98
  ---
82
99
 
83
100
  ## Radarr / Sonarr
84
101
 
85
- Set up Quasarr as a **Newznab Indexer** and **SABnzbd Download Client**:
102
+ > ⚠️ **Sonarr users:** Set all shows (including anime) to the **Standard** series type. Quasarr cannot find releases for shows set to Anime/Absolute.
86
103
 
87
- 1. **URL**: Use the `URL` from the **API Information** section of the console output (or copy it from the Quasarr web UI).
88
- 2. **API Key**: Use the `API Key` from the **API Information** section of the console output (or copy it from the Quasarr web UI).
89
- 3. Leave all other settings at their defaults.
90
104
 
91
- > **Important notice for Sonarr**
92
- > - Ensure all shows (including anime) are set to the **Standard** series type.
93
- > - Quasarr will never find releases for shows set to **Anime / Absolute**.
105
+ Add Quasarr as both a **Newznab Indexer** and **SABnzbd Download Client** using your Quasarr URL and API Key.
106
+
107
+ <details>
108
+ <summary>Show download status in Radarr/Sonarr</summary>
109
+
110
+ **Activity → Queue → Options** → Enable `Release Title`
111
+
112
+ </details>
113
+
114
+ <details>
115
+ <summary>Restrict results to a specific mirror</summary>
116
+
117
+ Append the mirror name to your Newznab URL:
118
+ ```
119
+ /api/dropbox/
120
+ ```
121
+ Only releases with `dropbox` in a link will be returned. If the mirror isn't available, the release will fail.
122
+
123
+ </details>
94
124
 
95
125
  ---
96
126
 
97
127
  ## LazyLibrarian
98
128
 
99
- > **Important notice**
100
- > - This feature is experimental and may not work as expected.
101
- > - Quasarr cannot help you with metadata issues, missing covers, or other LazyLibrarian problems.
102
- > - Please report issues when one of your hostnames yields results through their website, but not in LazyLibrarian.
103
-
104
- Set up Quasarr as a **SABnzbd+ Downloader**
129
+ > ⚠️ **Experimental feature** — Report issues when a hostname returns results on its website but not in LazyLibrarian.
105
130
 
106
- 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).
107
- 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).
108
- 3. **SABnzbd Category**: Use `docs` to ensure LazyLibrarian does not interfere with Radarr/Sonarr.
109
- 4. Press `Test SABnzbd` to verify the connection, then `Save changes`.
131
+ <details>
132
+ <summary>Setup instructions</summary>
110
133
 
111
- Set up Quasarr as a **Newznab Provider**:
112
- 1. **Newznab URL**: Use the `URL` from the **API Information** section of the console output (or copy it from the Quasarr web UI).
113
- 2. **Newznab API** Use the `API Key` from the **API Information** section of the console output (or copy it from the Quasarr web UI).
114
- 3. Press `Test` to verify the connection, then `Save changes`.
134
+ ### SABnzbd+ Downloader
115
135
 
116
- Fix the `Importing` settings:
117
- 1. Check `Enable OpenLibrary api for book/author information`
118
- 2. Select `OpenLibrary` below `Primary Information Source`
119
- 2. Under `Import languages` add `, Unknown` (and for German users: `, de, ger, de-DE`).
136
+ | Setting | Value |
137
+ |---------|-------|
138
+ | URL/Port | Your Quasarr host and port |
139
+ | API Key | Your Quasarr API Key |
140
+ | Category | `docs` |
120
141
 
121
- Fix the `Processing` settings:
122
- 1. Under `Folders` add the full Quasarr download path, typically `/downloads/Quasarr/`
123
- 2. If you do not do this, processing after the download will fail.
142
+ ### Newznab Provider
124
143
 
144
+ | Setting | Value |
145
+ |---------|-------|
146
+ | URL | Your Quasarr URL |
147
+ | API | Your Quasarr API Key |
125
148
 
149
+ ### Fix Import & Processing
126
150
 
127
- ---
151
+ **Importing:**
152
+ - Enable `OpenLibrary api for book/author information`
153
+ - Set Primary Information Source to `OpenLibrary`
154
+ - Add to Import languages: `, Unknown` (German users: `, de, ger, de-DE`)
128
155
 
129
- ## Advanced Settings
156
+ **Processing Folders:**
157
+ - Add your Quasarr download path (typically `/downloads/Quasarr/`)
130
158
 
131
- To restrict results to a specific mirror, add the mirror name to the Newznab/indexer URL.
132
- > **Example:** Appending `/api/dropbox/` will only return releases where `dropbox` is explicitly mentioned in a link.
133
- > **Caution:** If a mirror is not available at a hostname, the release will be ignored or the download will fail. Use this option carefully.
159
+ </details>
134
160
 
135
- To see download status information in Radarr/Sonarr
136
- 1. Open `Activity` → `Queue` → `Options`
137
- 2. Enable `Release Title`
161
+ ---
138
162
 
139
163
  # Docker
140
164
 
@@ -173,8 +197,6 @@ Use this only in case you can't run the docker image.
173
197
  `pip install quasarr`
174
198
 
175
199
  * Requires Python 3.12 or later
176
- * Requires [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
177
- * Requires [JDownloader 2](https://jdownloader.org/download/index) with [My JDownloader](https://my.jdownloader.org/)
178
200
 
179
201
  ```
180
202
  --port=8080
@@ -205,10 +227,11 @@ Most feature requests can be satisfied by:
205
227
  - Still having an issue? Provide a detailed report [here](https://github.com/rix1337/Quasarr/issues/new/choose)!
206
228
  - There are no hostname integrations in active development unless you see an open pull request
207
229
  [here](https://github.com/rix1337/Quasarr/pulls).
208
- - Pull requests are welcome. Especially for popular hostnames.
230
+ - **Pull requests are welcome!** Especially for popular hostnames.
231
+ - A short guide to set up required dev services is found in [/docker/dev-setup.md](https://github.com/rix1337/Quasarr/blob/main/docker/dev-setup.md)
209
232
  - Always reach out on Discord before starting work on a new feature to prevent waste of time.
210
233
  - Please follow the existing code style and project structure.
211
- - Anti-bot measures must be circumvented fully by Quasarr. Thus you will need to provide a working solution for new
234
+ - Anti-bot measures must be circumvented fully by Quasarr. Thus, you will need to provide a working solution for new
212
235
  CAPTCHA types by integrating it in the Quasarr Web UI.
213
236
  - Please provide proof of functionality (screenshots/examples) when submitting your pull request.
214
237
 
@@ -238,6 +261,8 @@ Image access is limited to [active monthly GitHub sponsors](https://github.com/u
238
261
 
239
262
  ## 🐋 Docker Login
240
263
 
264
+ ⚠️ **Before logging in, the image will not download.**
265
+
241
266
  ```bash
242
267
  echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
243
268
  ````
@@ -245,14 +270,10 @@ echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
245
270
  * `USERNAME` → your GitHub username
246
271
  * `GITHUB_TOKEN` → the token you just created
247
272
 
248
- ---
249
-
250
- ⚠️ **Before logging in, the image will not download.**
251
-
252
- ---
253
-
254
273
  ## ▶️ Run SponsorsHelper
255
274
 
275
+ ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
276
+
256
277
  ```bash
257
278
  docker run -d \
258
279
  --name='SponsorsHelper' \
@@ -268,8 +289,6 @@ docker run -d \
268
289
  ghcr.io/rix1337-sponsors/docker/helper:latest
269
290
  ```
270
291
 
271
- ### Required Parameters
272
-
273
292
  * `QUASARR_URL` → Local URL of Quasarr
274
293
  * `DEATHBYCAPTCHA_TOKEN` → [DeathByCaptcha](https://deathbycaptcha.com/register?refid=6184288242b) account token
275
294
  * `GITHUB_TOKEN` → Classic GitHub PAT with the scopes listed above
@@ -277,30 +296,3 @@ docker run -d \
277
296
  * `NX_USER` / `NX_PASS` → NX account credentials
278
297
  * `JUNKIES_USER` / `JUNKIES_PASS` → Junkies account credentials
279
298
  * `JUNKIES_HOSTER` → Preferred hoster for Junkies links
280
- ---
281
-
282
- ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
283
-
284
- ---
285
-
286
- # Development Setup for Pull Requests
287
-
288
- To test your changes before submitting a pull request:
289
-
290
- **Run Quasarr with the `--internal_address` parameter:**
291
-
292
- ```bash
293
- python Quasarr.py --internal_address=http://<host-ip>:<port>
294
- ```
295
-
296
- Replace `<host-ip>` and `<port>` with the scheme, IP, and port of your host machine.
297
- The `--internal_address` parameter is **mandatory**.
298
-
299
- **Start the required services using the `dev-services-compose.yml` file:**
300
-
301
- ```bash
302
- CONFIG_VOLUMES=/path/to/config docker-compose -f docker/dev-services-compose.yml up
303
- ```
304
-
305
- Replace `/path/to/config` with your desired configuration location.
306
- The `CONFIG_VOLUMES` environment variable is **mandatory**.
@@ -17,97 +17,121 @@ Alternatively, follow the link from the console output (or discord notification)
17
17
  Quasarr will confidently handle the rest. Some CAPTCHA types require [Tampermonkey](https://www.tampermonkey.net/) to be installed in your browser.
18
18
 
19
19
  # Instructions
20
- 1. Set up and run [FlareSolverr 3](https://github.com/FlareSolverr/FlareSolverr).
21
- 2. Set up and run [JDownloader 2](https://jdownloader.org/download/index).
22
- 3. Follow the next steps.
20
+
21
+ # Instructions
22
+
23
+ 1. Set up and run [JDownloader 2](https://jdownloader.org/download/index)
24
+ 2. Configure the integrations below
25
+ 3. (Optional) Set up [FlareSolverr 3](https://github.com/FlareSolverr/FlareSolverr) for sites that require it
26
+
27
+ > **Finding your Quasarr URL and API Key**
28
+ > Both values are shown in the console output under **API Information**, or in the Quasarr web UI.
23
29
 
24
30
  ---
25
31
 
26
- ## FlareSolverr
27
- 1. Ensure your running FlareSolverr is reachable by Quasarr.
28
- 2. Provide your FlareSolverr URL to Quasarr during the setup process.
29
- 3. The full URL must include the version path, e.g., `http://192.168.1.1:8191/v1`.
32
+ ## FlareSolverr (Optional)
33
+
34
+ FlareSolverr is **optional** but **required for some sites** (e.g., AL) that use Cloudflare protection. You can skip FlareSolverr during setup and configure it later via the web UI.
35
+
36
+ If using FlareSolverr, provide your URL including the version path:
37
+ ```
38
+ http://192.168.1.1:8191/v1
39
+ ```
40
+
41
+ > **Note:** Sites requiring FlareSolverr will show a warning in the console when it's not configured.
30
42
 
31
43
  ---
32
44
 
33
45
  ## Quasarr
34
46
 
35
- Tell Quasarr which sites to search for releases. It requires at least one valid source to start up.
47
+ > ⚠️ Quasarr requires at least one valid hostname to start. It does not provide or endorse any specific sources, but community-maintained lists are available:
48
+
49
+ 🔗 **[quasarr-hostnames.pages.dev](https://quasarr-hostnames.pages.dev)** — third-party guide for finding hostnames
36
50
 
37
- > - By default, Quasarr does **not** know which sites to scrape for download links.
38
- > - The setup will guide you through the process of providing valid hostnames for Quasarr to scrape.
39
- > - Do **not** ask for help here if you do not know which hostnames to use. Picking them is solely your responsibility.
40
- > - You may check sites like [Pastebin](https://pastebin.com/search?q=hostnames+quasarr) for user‑submitted suggestions.
51
+ 📋 Alternatively, browse community suggestions via [pastebin search](https://pastebin.com/search?q=hostnames+quasarr) (login required).
41
52
 
42
53
  ---
43
54
 
44
55
  ## JDownloader
45
56
 
46
- 1. Ensure your running JDownloader is connected to the My JDownloader service.
47
- 2. Provide your [My‑JDownloader‑Credentials](https://my.jdownloader.org) to Quasarr during the setup process.
57
+ > ⚠️ If using Docker:
58
+ > JDownloader's download path must be available to Radarr/Sonarr/LazyLibrarian with **identical internal and external path mappings**!
59
+ > Matching only the external path is not sufficient.
60
+
61
+ 1. Start and connect JDownloader to [My JDownloader](https://my.jdownloader.org)
62
+ 2. Provide your My JDownloader credentials during Quasarr setup
63
+
64
+ <details>
65
+ <summary>Fresh install recommended</summary>
66
+
67
+ Consider setting up a fresh JDownloader instance. Quasarr will modify JDownloader's settings to enable Radarr/Sonarr/LazyLibrarian integration.
48
68
 
49
- > - Consider setting up a fresh JDownloader before you begin.
50
- > - JDownloader must be running and available to Quasarr.
51
- > - Quasarr will modify JDownloader’s settings so downloads can be handled by Radarr/Sonarr/LazyLibrarian.
52
- > - 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).
69
+ </details>
53
70
 
54
71
  ---
55
72
 
56
73
  ## Radarr / Sonarr
57
74
 
58
- Set up Quasarr as a **Newznab Indexer** and **SABnzbd Download Client**:
75
+ > ⚠️ **Sonarr users:** Set all shows (including anime) to the **Standard** series type. Quasarr cannot find releases for shows set to Anime/Absolute.
59
76
 
60
- 1. **URL**: Use the `URL` from the **API Information** section of the console output (or copy it from the Quasarr web UI).
61
- 2. **API Key**: Use the `API Key` from the **API Information** section of the console output (or copy it from the Quasarr web UI).
62
- 3. Leave all other settings at their defaults.
63
77
 
64
- > **Important notice for Sonarr**
65
- > - Ensure all shows (including anime) are set to the **Standard** series type.
66
- > - Quasarr will never find releases for shows set to **Anime / Absolute**.
78
+ Add Quasarr as both a **Newznab Indexer** and **SABnzbd Download Client** using your Quasarr URL and API Key.
79
+
80
+ <details>
81
+ <summary>Show download status in Radarr/Sonarr</summary>
82
+
83
+ **Activity → Queue → Options** → Enable `Release Title`
84
+
85
+ </details>
86
+
87
+ <details>
88
+ <summary>Restrict results to a specific mirror</summary>
89
+
90
+ Append the mirror name to your Newznab URL:
91
+ ```
92
+ /api/dropbox/
93
+ ```
94
+ Only releases with `dropbox` in a link will be returned. If the mirror isn't available, the release will fail.
95
+
96
+ </details>
67
97
 
68
98
  ---
69
99
 
70
100
  ## LazyLibrarian
71
101
 
72
- > **Important notice**
73
- > - This feature is experimental and may not work as expected.
74
- > - Quasarr cannot help you with metadata issues, missing covers, or other LazyLibrarian problems.
75
- > - Please report issues when one of your hostnames yields results through their website, but not in LazyLibrarian.
76
-
77
- Set up Quasarr as a **SABnzbd+ Downloader**
102
+ > ⚠️ **Experimental feature** — Report issues when a hostname returns results on its website but not in LazyLibrarian.
78
103
 
79
- 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).
80
- 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).
81
- 3. **SABnzbd Category**: Use `docs` to ensure LazyLibrarian does not interfere with Radarr/Sonarr.
82
- 4. Press `Test SABnzbd` to verify the connection, then `Save changes`.
104
+ <details>
105
+ <summary>Setup instructions</summary>
83
106
 
84
- Set up Quasarr as a **Newznab Provider**:
85
- 1. **Newznab URL**: Use the `URL` from the **API Information** section of the console output (or copy it from the Quasarr web UI).
86
- 2. **Newznab API** Use the `API Key` from the **API Information** section of the console output (or copy it from the Quasarr web UI).
87
- 3. Press `Test` to verify the connection, then `Save changes`.
107
+ ### SABnzbd+ Downloader
88
108
 
89
- Fix the `Importing` settings:
90
- 1. Check `Enable OpenLibrary api for book/author information`
91
- 2. Select `OpenLibrary` below `Primary Information Source`
92
- 2. Under `Import languages` add `, Unknown` (and for German users: `, de, ger, de-DE`).
109
+ | Setting | Value |
110
+ |---------|-------|
111
+ | URL/Port | Your Quasarr host and port |
112
+ | API Key | Your Quasarr API Key |
113
+ | Category | `docs` |
93
114
 
94
- Fix the `Processing` settings:
95
- 1. Under `Folders` add the full Quasarr download path, typically `/downloads/Quasarr/`
96
- 2. If you do not do this, processing after the download will fail.
115
+ ### Newznab Provider
97
116
 
117
+ | Setting | Value |
118
+ |---------|-------|
119
+ | URL | Your Quasarr URL |
120
+ | API | Your Quasarr API Key |
98
121
 
122
+ ### Fix Import & Processing
99
123
 
100
- ---
124
+ **Importing:**
125
+ - Enable `OpenLibrary api for book/author information`
126
+ - Set Primary Information Source to `OpenLibrary`
127
+ - Add to Import languages: `, Unknown` (German users: `, de, ger, de-DE`)
101
128
 
102
- ## Advanced Settings
129
+ **Processing Folders:**
130
+ - Add your Quasarr download path (typically `/downloads/Quasarr/`)
103
131
 
104
- To restrict results to a specific mirror, add the mirror name to the Newznab/indexer URL.
105
- > **Example:** Appending `/api/dropbox/` will only return releases where `dropbox` is explicitly mentioned in a link.
106
- > **Caution:** If a mirror is not available at a hostname, the release will be ignored or the download will fail. Use this option carefully.
132
+ </details>
107
133
 
108
- To see download status information in Radarr/Sonarr
109
- 1. Open `Activity` → `Queue` → `Options`
110
- 2. Enable `Release Title`
134
+ ---
111
135
 
112
136
  # Docker
113
137
 
@@ -146,8 +170,6 @@ Use this only in case you can't run the docker image.
146
170
  `pip install quasarr`
147
171
 
148
172
  * Requires Python 3.12 or later
149
- * Requires [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
150
- * Requires [JDownloader 2](https://jdownloader.org/download/index) with [My JDownloader](https://my.jdownloader.org/)
151
173
 
152
174
  ```
153
175
  --port=8080
@@ -178,10 +200,11 @@ Most feature requests can be satisfied by:
178
200
  - Still having an issue? Provide a detailed report [here](https://github.com/rix1337/Quasarr/issues/new/choose)!
179
201
  - There are no hostname integrations in active development unless you see an open pull request
180
202
  [here](https://github.com/rix1337/Quasarr/pulls).
181
- - Pull requests are welcome. Especially for popular hostnames.
203
+ - **Pull requests are welcome!** Especially for popular hostnames.
204
+ - A short guide to set up required dev services is found in [/docker/dev-setup.md](https://github.com/rix1337/Quasarr/blob/main/docker/dev-setup.md)
182
205
  - Always reach out on Discord before starting work on a new feature to prevent waste of time.
183
206
  - Please follow the existing code style and project structure.
184
- - Anti-bot measures must be circumvented fully by Quasarr. Thus you will need to provide a working solution for new
207
+ - Anti-bot measures must be circumvented fully by Quasarr. Thus, you will need to provide a working solution for new
185
208
  CAPTCHA types by integrating it in the Quasarr Web UI.
186
209
  - Please provide proof of functionality (screenshots/examples) when submitting your pull request.
187
210
 
@@ -211,6 +234,8 @@ Image access is limited to [active monthly GitHub sponsors](https://github.com/u
211
234
 
212
235
  ## 🐋 Docker Login
213
236
 
237
+ ⚠️ **Before logging in, the image will not download.**
238
+
214
239
  ```bash
215
240
  echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
216
241
  ````
@@ -218,14 +243,10 @@ echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
218
243
  * `USERNAME` → your GitHub username
219
244
  * `GITHUB_TOKEN` → the token you just created
220
245
 
221
- ---
222
-
223
- ⚠️ **Before logging in, the image will not download.**
224
-
225
- ---
226
-
227
246
  ## ▶️ Run SponsorsHelper
228
247
 
248
+ ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
249
+
229
250
  ```bash
230
251
  docker run -d \
231
252
  --name='SponsorsHelper' \
@@ -241,8 +262,6 @@ docker run -d \
241
262
  ghcr.io/rix1337-sponsors/docker/helper:latest
242
263
  ```
243
264
 
244
- ### Required Parameters
245
-
246
265
  * `QUASARR_URL` → Local URL of Quasarr
247
266
  * `DEATHBYCAPTCHA_TOKEN` → [DeathByCaptcha](https://deathbycaptcha.com/register?refid=6184288242b) account token
248
267
  * `GITHUB_TOKEN` → Classic GitHub PAT with the scopes listed above
@@ -250,30 +269,3 @@ docker run -d \
250
269
  * `NX_USER` / `NX_PASS` → NX account credentials
251
270
  * `JUNKIES_USER` / `JUNKIES_PASS` → Junkies account credentials
252
271
  * `JUNKIES_HOSTER` → Preferred hoster for Junkies links
253
- ---
254
-
255
- ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
256
-
257
- ---
258
-
259
- # Development Setup for Pull Requests
260
-
261
- To test your changes before submitting a pull request:
262
-
263
- **Run Quasarr with the `--internal_address` parameter:**
264
-
265
- ```bash
266
- python Quasarr.py --internal_address=http://<host-ip>:<port>
267
- ```
268
-
269
- Replace `<host-ip>` and `<port>` with the scheme, IP, and port of your host machine.
270
- The `--internal_address` parameter is **mandatory**.
271
-
272
- **Start the required services using the `dev-services-compose.yml` file:**
273
-
274
- ```bash
275
- CONFIG_VOLUMES=/path/to/config docker-compose -f docker/dev-services-compose.yml up
276
- ```
277
-
278
- Replace `/path/to/config` with your desired configuration location.
279
- The `CONFIG_VOLUMES` environment variable is **mandatory**.