quasarr 1.26.6__tar.gz → 1.27.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 (85) hide show
  1. {quasarr-1.26.6 → quasarr-1.27.0}/PKG-INFO +79 -93
  2. {quasarr-1.26.6 → quasarr-1.27.0}/README.md +78 -92
  3. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/__init__.py +24 -208
  4. quasarr-1.27.0/quasarr/api/config/__init__.py +135 -0
  5. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/sessions/al.py +21 -0
  6. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/sessions/dd.py +8 -1
  7. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/sessions/dl.py +34 -23
  8. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/sessions/nx.py +8 -1
  9. quasarr-1.27.0/quasarr/providers/utils.py +168 -0
  10. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/version.py +1 -1
  11. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/storage/config.py +3 -0
  12. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/storage/setup.py +456 -15
  13. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr.egg-info/PKG-INFO +79 -93
  14. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr.egg-info/SOURCES.txt +1 -0
  15. quasarr-1.26.6/quasarr/api/config/__init__.py +0 -23
  16. {quasarr-1.26.6 → quasarr-1.27.0}/LICENSE +0 -0
  17. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/api/__init__.py +0 -0
  18. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/api/arr/__init__.py +0 -0
  19. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/api/captcha/__init__.py +0 -0
  20. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/api/sponsors_helper/__init__.py +0 -0
  21. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/api/statistics/__init__.py +0 -0
  22. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/__init__.py +0 -0
  23. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/linkcrypters/__init__.py +0 -0
  24. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/linkcrypters/al.py +0 -0
  25. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/linkcrypters/filecrypt.py +0 -0
  26. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/linkcrypters/hide.py +0 -0
  27. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/packages/__init__.py +0 -0
  28. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/__init__.py +0 -0
  29. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/al.py +0 -0
  30. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/by.py +0 -0
  31. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/dd.py +0 -0
  32. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/dj.py +0 -0
  33. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/dl.py +0 -0
  34. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/dt.py +0 -0
  35. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/dw.py +0 -0
  36. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/he.py +0 -0
  37. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/mb.py +0 -0
  38. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/nk.py +0 -0
  39. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/nx.py +0 -0
  40. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/sf.py +0 -0
  41. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/sj.py +0 -0
  42. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/sl.py +0 -0
  43. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/wd.py +0 -0
  44. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/downloads/sources/wx.py +0 -0
  45. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/__init__.py +0 -0
  46. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/cloudflare.py +0 -0
  47. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/html_images.py +0 -0
  48. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/html_templates.py +0 -0
  49. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/imdb_metadata.py +0 -0
  50. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/log.py +0 -0
  51. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/myjd_api.py +0 -0
  52. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/notifications.py +0 -0
  53. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/obfuscated.py +0 -0
  54. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/sessions/__init__.py +0 -0
  55. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/shared_state.py +0 -0
  56. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/statistics.py +0 -0
  57. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/providers/web_server.py +0 -0
  58. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/__init__.py +0 -0
  59. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/__init__.py +0 -0
  60. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/al.py +0 -0
  61. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/by.py +0 -0
  62. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/dd.py +0 -0
  63. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/dj.py +0 -0
  64. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/dl.py +0 -0
  65. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/dt.py +0 -0
  66. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/dw.py +0 -0
  67. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/fx.py +0 -0
  68. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/he.py +0 -0
  69. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/mb.py +0 -0
  70. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/nk.py +0 -0
  71. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/nx.py +0 -0
  72. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/sf.py +0 -0
  73. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/sj.py +0 -0
  74. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/sl.py +0 -0
  75. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/wd.py +0 -0
  76. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/search/sources/wx.py +0 -0
  77. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/storage/__init__.py +0 -0
  78. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr/storage/sqlite_database.py +0 -0
  79. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr.egg-info/dependency_links.txt +0 -0
  80. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr.egg-info/entry_points.txt +0 -0
  81. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr.egg-info/not-zip-safe +0 -0
  82. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr.egg-info/requires.txt +0 -0
  83. {quasarr-1.26.6 → quasarr-1.27.0}/quasarr.egg-info/top_level.txt +0 -0
  84. {quasarr-1.26.6 → quasarr-1.27.0}/setup.cfg +0 -0
  85. {quasarr-1.26.6 → quasarr-1.27.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quasarr
3
- Version: 1.26.6
3
+ Version: 1.27.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,115 @@ 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
+ 1. Set up and run [FlareSolverr 3](https://github.com/FlareSolverr/FlareSolverr)
49
+ 2. Set up and run [JDownloader 2](https://jdownloader.org/download/index)
50
+ 3. Configure the integrations below
51
+
52
+ > **Finding your Quasarr URL and API Key**
53
+ > Both values are shown in the console output under **API Information**, or in the Quasarr web UI.
50
54
 
51
55
  ---
52
56
 
53
57
  ## 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`.
58
+
59
+ Provide your FlareSolverr URL during setup. Include the version path:
60
+ ```
61
+ http://192.168.1.1:8191/v1
62
+ ```
57
63
 
58
64
  ---
59
65
 
60
66
  ## Quasarr
61
67
 
62
- Tell Quasarr which sites to search for releases. It requires at least one valid source to start up.
68
+ > ⚠️ Quasarr requires at least one valid hostname to start. It does not provide or endorse any specific sources, but community-maintained lists are available:
69
+
70
+ 🔗 **[quasarr-hostnames.pages.dev](https://quasarr-hostnames.pages.dev)** — third-party guide for finding hostnames
63
71
 
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.
72
+ 📋 Alternatively, browse community suggestions via [pastebin search](https://pastebin.com/search?q=hostnames+quasarr) (login required).
68
73
 
69
74
  ---
70
75
 
71
76
  ## JDownloader
72
77
 
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.
78
+ > ⚠️ If using Docker:
79
+ > JDownloader's download path must be available to Radarr/Sonarr/LazyLibrarian with **identical internal and external path mappings**!
80
+ > Matching only the external path is not sufficient.
75
81
 
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).
82
+ 1. Start and connect JDownloader to [My JDownloader](https://my.jdownloader.org)
83
+ 2. Provide your My JDownloader credentials during Quasarr setup
84
+
85
+ <details>
86
+ <summary>Fresh install recommended</summary>
87
+
88
+ Consider setting up a fresh JDownloader instance. Quasarr will modify JDownloader's settings to enable Radarr/Sonarr/LazyLibrarian integration.
89
+
90
+ </details>
80
91
 
81
92
  ---
82
93
 
83
94
  ## Radarr / Sonarr
84
95
 
85
- Set up Quasarr as a **Newznab Indexer** and **SABnzbd Download Client**:
96
+ > ⚠️ **Sonarr users:** Set all shows (including anime) to the **Standard** series type. Quasarr cannot find releases for shows set to Anime/Absolute.
97
+
98
+
99
+ Add Quasarr as both a **Newznab Indexer** and **SABnzbd Download Client** using your Quasarr URL and API Key.
100
+
101
+ <details>
102
+ <summary>Show download status in Radarr/Sonarr</summary>
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.
104
+ **Activity Queue Options** Enable `Release Title`
90
105
 
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**.
106
+ </details>
107
+
108
+ <details>
109
+ <summary>Restrict results to a specific mirror</summary>
110
+
111
+ Append the mirror name to your Newznab URL:
112
+ ```
113
+ /api/dropbox/
114
+ ```
115
+ Only releases with `dropbox` in a link will be returned. If the mirror isn't available, the release will fail.
116
+
117
+ </details>
94
118
 
95
119
  ---
96
120
 
97
121
  ## LazyLibrarian
98
122
 
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**
123
+ > ⚠️ **Experimental feature** — Report issues when a hostname returns results on its website but not in LazyLibrarian.
105
124
 
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`.
125
+ <details>
126
+ <summary>Setup instructions</summary>
110
127
 
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`.
128
+ ### SABnzbd+ Downloader
115
129
 
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`).
130
+ | Setting | Value |
131
+ |---------|-------|
132
+ | URL/Port | Your Quasarr host and port |
133
+ | API Key | Your Quasarr API Key |
134
+ | Category | `docs` |
120
135
 
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.
136
+ ### Newznab Provider
124
137
 
138
+ | Setting | Value |
139
+ |---------|-------|
140
+ | URL | Your Quasarr URL |
141
+ | API | Your Quasarr API Key |
125
142
 
143
+ ### Fix Import & Processing
126
144
 
127
- ---
145
+ **Importing:**
146
+ - Enable `OpenLibrary api for book/author information`
147
+ - Set Primary Information Source to `OpenLibrary`
148
+ - Add to Import languages: `, Unknown` (German users: `, de, ger, de-DE`)
128
149
 
129
- ## Advanced Settings
150
+ **Processing Folders:**
151
+ - Add your Quasarr download path (typically `/downloads/Quasarr/`)
130
152
 
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.
153
+ </details>
134
154
 
135
- To see download status information in Radarr/Sonarr
136
- 1. Open `Activity` → `Queue` → `Options`
137
- 2. Enable `Release Title`
155
+ ---
138
156
 
139
157
  # Docker
140
158
 
@@ -173,8 +191,6 @@ Use this only in case you can't run the docker image.
173
191
  `pip install quasarr`
174
192
 
175
193
  * 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
194
 
179
195
  ```
180
196
  --port=8080
@@ -205,10 +221,11 @@ Most feature requests can be satisfied by:
205
221
  - Still having an issue? Provide a detailed report [here](https://github.com/rix1337/Quasarr/issues/new/choose)!
206
222
  - There are no hostname integrations in active development unless you see an open pull request
207
223
  [here](https://github.com/rix1337/Quasarr/pulls).
208
- - Pull requests are welcome. Especially for popular hostnames.
224
+ - **Pull requests are welcome!** Especially for popular hostnames.
225
+ - 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
226
  - Always reach out on Discord before starting work on a new feature to prevent waste of time.
210
227
  - 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
228
+ - Anti-bot measures must be circumvented fully by Quasarr. Thus, you will need to provide a working solution for new
212
229
  CAPTCHA types by integrating it in the Quasarr Web UI.
213
230
  - Please provide proof of functionality (screenshots/examples) when submitting your pull request.
214
231
 
@@ -238,6 +255,8 @@ Image access is limited to [active monthly GitHub sponsors](https://github.com/u
238
255
 
239
256
  ## 🐋 Docker Login
240
257
 
258
+ ⚠️ **Before logging in, the image will not download.**
259
+
241
260
  ```bash
242
261
  echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
243
262
  ````
@@ -245,14 +264,10 @@ echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
245
264
  * `USERNAME` → your GitHub username
246
265
  * `GITHUB_TOKEN` → the token you just created
247
266
 
248
- ---
249
-
250
- ⚠️ **Before logging in, the image will not download.**
251
-
252
- ---
253
-
254
267
  ## ▶️ Run SponsorsHelper
255
268
 
269
+ ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
270
+
256
271
  ```bash
257
272
  docker run -d \
258
273
  --name='SponsorsHelper' \
@@ -268,8 +283,6 @@ docker run -d \
268
283
  ghcr.io/rix1337-sponsors/docker/helper:latest
269
284
  ```
270
285
 
271
- ### Required Parameters
272
-
273
286
  * `QUASARR_URL` → Local URL of Quasarr
274
287
  * `DEATHBYCAPTCHA_TOKEN` → [DeathByCaptcha](https://deathbycaptcha.com/register?refid=6184288242b) account token
275
288
  * `GITHUB_TOKEN` → Classic GitHub PAT with the scopes listed above
@@ -277,30 +290,3 @@ docker run -d \
277
290
  * `NX_USER` / `NX_PASS` → NX account credentials
278
291
  * `JUNKIES_USER` / `JUNKIES_PASS` → Junkies account credentials
279
292
  * `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,115 @@ 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
+ 1. Set up and run [FlareSolverr 3](https://github.com/FlareSolverr/FlareSolverr)
22
+ 2. Set up and run [JDownloader 2](https://jdownloader.org/download/index)
23
+ 3. Configure the integrations below
24
+
25
+ > **Finding your Quasarr URL and API Key**
26
+ > Both values are shown in the console output under **API Information**, or in the Quasarr web UI.
23
27
 
24
28
  ---
25
29
 
26
30
  ## 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`.
31
+
32
+ Provide your FlareSolverr URL during setup. Include the version path:
33
+ ```
34
+ http://192.168.1.1:8191/v1
35
+ ```
30
36
 
31
37
  ---
32
38
 
33
39
  ## Quasarr
34
40
 
35
- Tell Quasarr which sites to search for releases. It requires at least one valid source to start up.
41
+ > ⚠️ Quasarr requires at least one valid hostname to start. It does not provide or endorse any specific sources, but community-maintained lists are available:
42
+
43
+ 🔗 **[quasarr-hostnames.pages.dev](https://quasarr-hostnames.pages.dev)** — third-party guide for finding hostnames
36
44
 
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.
45
+ 📋 Alternatively, browse community suggestions via [pastebin search](https://pastebin.com/search?q=hostnames+quasarr) (login required).
41
46
 
42
47
  ---
43
48
 
44
49
  ## JDownloader
45
50
 
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.
51
+ > ⚠️ If using Docker:
52
+ > JDownloader's download path must be available to Radarr/Sonarr/LazyLibrarian with **identical internal and external path mappings**!
53
+ > Matching only the external path is not sufficient.
48
54
 
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).
55
+ 1. Start and connect JDownloader to [My JDownloader](https://my.jdownloader.org)
56
+ 2. Provide your My JDownloader credentials during Quasarr setup
57
+
58
+ <details>
59
+ <summary>Fresh install recommended</summary>
60
+
61
+ Consider setting up a fresh JDownloader instance. Quasarr will modify JDownloader's settings to enable Radarr/Sonarr/LazyLibrarian integration.
62
+
63
+ </details>
53
64
 
54
65
  ---
55
66
 
56
67
  ## Radarr / Sonarr
57
68
 
58
- Set up Quasarr as a **Newznab Indexer** and **SABnzbd Download Client**:
69
+ > ⚠️ **Sonarr users:** Set all shows (including anime) to the **Standard** series type. Quasarr cannot find releases for shows set to Anime/Absolute.
70
+
71
+
72
+ Add Quasarr as both a **Newznab Indexer** and **SABnzbd Download Client** using your Quasarr URL and API Key.
73
+
74
+ <details>
75
+ <summary>Show download status in Radarr/Sonarr</summary>
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.
77
+ **Activity Queue Options** Enable `Release Title`
63
78
 
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**.
79
+ </details>
80
+
81
+ <details>
82
+ <summary>Restrict results to a specific mirror</summary>
83
+
84
+ Append the mirror name to your Newznab URL:
85
+ ```
86
+ /api/dropbox/
87
+ ```
88
+ Only releases with `dropbox` in a link will be returned. If the mirror isn't available, the release will fail.
89
+
90
+ </details>
67
91
 
68
92
  ---
69
93
 
70
94
  ## LazyLibrarian
71
95
 
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**
96
+ > ⚠️ **Experimental feature** — Report issues when a hostname returns results on its website but not in LazyLibrarian.
78
97
 
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`.
98
+ <details>
99
+ <summary>Setup instructions</summary>
83
100
 
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`.
101
+ ### SABnzbd+ Downloader
88
102
 
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`).
103
+ | Setting | Value |
104
+ |---------|-------|
105
+ | URL/Port | Your Quasarr host and port |
106
+ | API Key | Your Quasarr API Key |
107
+ | Category | `docs` |
93
108
 
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.
109
+ ### Newznab Provider
97
110
 
111
+ | Setting | Value |
112
+ |---------|-------|
113
+ | URL | Your Quasarr URL |
114
+ | API | Your Quasarr API Key |
98
115
 
116
+ ### Fix Import & Processing
99
117
 
100
- ---
118
+ **Importing:**
119
+ - Enable `OpenLibrary api for book/author information`
120
+ - Set Primary Information Source to `OpenLibrary`
121
+ - Add to Import languages: `, Unknown` (German users: `, de, ger, de-DE`)
101
122
 
102
- ## Advanced Settings
123
+ **Processing Folders:**
124
+ - Add your Quasarr download path (typically `/downloads/Quasarr/`)
103
125
 
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.
126
+ </details>
107
127
 
108
- To see download status information in Radarr/Sonarr
109
- 1. Open `Activity` → `Queue` → `Options`
110
- 2. Enable `Release Title`
128
+ ---
111
129
 
112
130
  # Docker
113
131
 
@@ -146,8 +164,6 @@ Use this only in case you can't run the docker image.
146
164
  `pip install quasarr`
147
165
 
148
166
  * 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
167
 
152
168
  ```
153
169
  --port=8080
@@ -178,10 +194,11 @@ Most feature requests can be satisfied by:
178
194
  - Still having an issue? Provide a detailed report [here](https://github.com/rix1337/Quasarr/issues/new/choose)!
179
195
  - There are no hostname integrations in active development unless you see an open pull request
180
196
  [here](https://github.com/rix1337/Quasarr/pulls).
181
- - Pull requests are welcome. Especially for popular hostnames.
197
+ - **Pull requests are welcome!** Especially for popular hostnames.
198
+ - 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
199
  - Always reach out on Discord before starting work on a new feature to prevent waste of time.
183
200
  - 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
201
+ - Anti-bot measures must be circumvented fully by Quasarr. Thus, you will need to provide a working solution for new
185
202
  CAPTCHA types by integrating it in the Quasarr Web UI.
186
203
  - Please provide proof of functionality (screenshots/examples) when submitting your pull request.
187
204
 
@@ -211,6 +228,8 @@ Image access is limited to [active monthly GitHub sponsors](https://github.com/u
211
228
 
212
229
  ## 🐋 Docker Login
213
230
 
231
+ ⚠️ **Before logging in, the image will not download.**
232
+
214
233
  ```bash
215
234
  echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
216
235
  ````
@@ -218,14 +237,10 @@ echo "GITHUB_TOKEN" | docker login ghcr.io -u USERNAME --password-stdin
218
237
  * `USERNAME` → your GitHub username
219
238
  * `GITHUB_TOKEN` → the token you just created
220
239
 
221
- ---
222
-
223
- ⚠️ **Before logging in, the image will not download.**
224
-
225
- ---
226
-
227
240
  ## ▶️ Run SponsorsHelper
228
241
 
242
+ ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
243
+
229
244
  ```bash
230
245
  docker run -d \
231
246
  --name='SponsorsHelper' \
@@ -241,8 +256,6 @@ docker run -d \
241
256
  ghcr.io/rix1337-sponsors/docker/helper:latest
242
257
  ```
243
258
 
244
- ### Required Parameters
245
-
246
259
  * `QUASARR_URL` → Local URL of Quasarr
247
260
  * `DEATHBYCAPTCHA_TOKEN` → [DeathByCaptcha](https://deathbycaptcha.com/register?refid=6184288242b) account token
248
261
  * `GITHUB_TOKEN` → Classic GitHub PAT with the scopes listed above
@@ -250,30 +263,3 @@ docker run -d \
250
263
  * `NX_USER` / `NX_PASS` → NX account credentials
251
264
  * `JUNKIES_USER` / `JUNKIES_PASS` → Junkies account credentials
252
265
  * `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**.