quasarr 1.20.1__tar.gz → 1.20.3__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 (78) hide show
  1. {quasarr-1.20.1 → quasarr-1.20.3}/PKG-INFO +11 -4
  2. {quasarr-1.20.1 → quasarr-1.20.3}/README.md +10 -3
  3. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/packages/__init__.py +10 -2
  4. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/myjd_api.py +24 -0
  5. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/version.py +1 -1
  6. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr.egg-info/PKG-INFO +11 -4
  7. {quasarr-1.20.1 → quasarr-1.20.3}/LICENSE +0 -0
  8. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/__init__.py +0 -0
  9. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/api/__init__.py +0 -0
  10. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/api/arr/__init__.py +0 -0
  11. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/api/captcha/__init__.py +0 -0
  12. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/api/config/__init__.py +0 -0
  13. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/api/sponsors_helper/__init__.py +0 -0
  14. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/api/statistics/__init__.py +0 -0
  15. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/__init__.py +0 -0
  16. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/linkcrypters/__init__.py +0 -0
  17. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/linkcrypters/al.py +0 -0
  18. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/linkcrypters/filecrypt.py +0 -0
  19. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/linkcrypters/hide.py +0 -0
  20. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/__init__.py +0 -0
  21. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/al.py +0 -0
  22. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/by.py +0 -0
  23. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/dd.py +0 -0
  24. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/dj.py +0 -0
  25. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/dt.py +0 -0
  26. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/dw.py +0 -0
  27. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/he.py +0 -0
  28. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/mb.py +0 -0
  29. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/nk.py +0 -0
  30. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/nx.py +0 -0
  31. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/sf.py +0 -0
  32. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/sj.py +0 -0
  33. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/sl.py +0 -0
  34. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/downloads/sources/wd.py +0 -0
  35. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/__init__.py +0 -0
  36. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/cloudflare.py +0 -0
  37. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/html_images.py +0 -0
  38. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/html_templates.py +0 -0
  39. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/imdb_metadata.py +0 -0
  40. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/log.py +0 -0
  41. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/notifications.py +0 -0
  42. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/obfuscated.py +0 -0
  43. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/sessions/__init__.py +0 -0
  44. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/sessions/al.py +0 -0
  45. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/sessions/dd.py +0 -0
  46. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/sessions/nx.py +0 -0
  47. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/shared_state.py +0 -0
  48. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/statistics.py +0 -0
  49. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/providers/web_server.py +0 -0
  50. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/__init__.py +0 -0
  51. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/__init__.py +0 -0
  52. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/al.py +0 -0
  53. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/by.py +0 -0
  54. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/dd.py +0 -0
  55. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/dj.py +0 -0
  56. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/dt.py +0 -0
  57. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/dw.py +0 -0
  58. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/fx.py +0 -0
  59. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/he.py +0 -0
  60. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/mb.py +0 -0
  61. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/nk.py +0 -0
  62. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/nx.py +0 -0
  63. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/sf.py +0 -0
  64. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/sj.py +0 -0
  65. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/sl.py +0 -0
  66. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/search/sources/wd.py +0 -0
  67. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/storage/__init__.py +0 -0
  68. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/storage/config.py +0 -0
  69. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/storage/setup.py +0 -0
  70. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr/storage/sqlite_database.py +0 -0
  71. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr.egg-info/SOURCES.txt +0 -0
  72. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr.egg-info/dependency_links.txt +0 -0
  73. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr.egg-info/entry_points.txt +0 -0
  74. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr.egg-info/not-zip-safe +0 -0
  75. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr.egg-info/requires.txt +0 -0
  76. {quasarr-1.20.1 → quasarr-1.20.3}/quasarr.egg-info/top_level.txt +0 -0
  77. {quasarr-1.20.1 → quasarr-1.20.3}/setup.cfg +0 -0
  78. {quasarr-1.20.1 → quasarr-1.20.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quasarr
3
- Version: 1.20.1
3
+ Version: 1.20.3
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
@@ -39,7 +39,7 @@ Quasarr pretends to be both `Newznab Indexer` and `SABnzbd client`. Therefore, d
39
39
  indexers or download clients. It simply does not know what NZB or torrent files are.
40
40
 
41
41
  Quasarr includes a solution to quickly and easily decrypt protected links.
42
- [Active Sponsors get access to SponsorsHelper to do so automatically.](https://github.com/rix1337/Quasarr?tab=readme-ov-file#sponsorshelper)
42
+ [Active monthly Sponsors get access to SponsorsHelper to do so automatically.](https://github.com/rix1337/Quasarr?tab=readme-ov-file#sponsorshelper)
43
43
  Alternatively, follow the link from the console output (or discord notification) to solve CAPTCHAs manually.
44
44
  Quasarr will confidently handle the rest.
45
45
 
@@ -258,6 +258,11 @@ docker run -d \
258
258
  -e 'DEATHBYCAPTCHA_TOKEN'='2FMum5zuDBxMmbXDIsADnllEFl73bomydIpzo7...' \
259
259
  -e 'GITHUB_TOKEN'='ghp_123.....456789' \
260
260
  -e 'FLARESOLVERR_URL'='http://10.10.0.1:8191/v1' \
261
+ -e 'NX_USER'='your_nx_username' \
262
+ -e 'NX_PASS'='your_nx_password' \
263
+ -e 'JUNKIES_USER'='your_junkies_username' \
264
+ -e 'JUNKIES_PASS'='your_junkies_password' \
265
+ -e 'JUNKIES_HOSTER'='your_desired_hoster' \
261
266
  ghcr.io/rix1337-sponsors/docker/helper:latest
262
267
  ```
263
268
 
@@ -266,8 +271,10 @@ docker run -d \
266
271
  * `QUASARR_URL` → Local URL of Quasarr
267
272
  * `DEATHBYCAPTCHA_TOKEN` → [DeathByCaptcha](https://deathbycaptcha.com/register?refid=6184288242b) account token
268
273
  * `GITHUB_TOKEN` → Classic GitHub PAT with the scopes listed above
269
- * `FLARESOLVERR_URL` → Local URL of [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
270
-
274
+ * `FLARESOLVERR_URL` → Local URL of [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) - required!
275
+ * `NX_USER` / `NX_PASS` → NX account credentials
276
+ * `JUNKIES_USER` / `JUNKIES_PASS` → Junkies account credentials
277
+ * `JUNKIES_HOSTER` → Preferred hoster for Junkies links
271
278
  ---
272
279
 
273
280
  ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
@@ -12,7 +12,7 @@ Quasarr pretends to be both `Newznab Indexer` and `SABnzbd client`. Therefore, d
12
12
  indexers or download clients. It simply does not know what NZB or torrent files are.
13
13
 
14
14
  Quasarr includes a solution to quickly and easily decrypt protected links.
15
- [Active Sponsors get access to SponsorsHelper to do so automatically.](https://github.com/rix1337/Quasarr?tab=readme-ov-file#sponsorshelper)
15
+ [Active monthly Sponsors get access to SponsorsHelper to do so automatically.](https://github.com/rix1337/Quasarr?tab=readme-ov-file#sponsorshelper)
16
16
  Alternatively, follow the link from the console output (or discord notification) to solve CAPTCHAs manually.
17
17
  Quasarr will confidently handle the rest.
18
18
 
@@ -231,6 +231,11 @@ docker run -d \
231
231
  -e 'DEATHBYCAPTCHA_TOKEN'='2FMum5zuDBxMmbXDIsADnllEFl73bomydIpzo7...' \
232
232
  -e 'GITHUB_TOKEN'='ghp_123.....456789' \
233
233
  -e 'FLARESOLVERR_URL'='http://10.10.0.1:8191/v1' \
234
+ -e 'NX_USER'='your_nx_username' \
235
+ -e 'NX_PASS'='your_nx_password' \
236
+ -e 'JUNKIES_USER'='your_junkies_username' \
237
+ -e 'JUNKIES_PASS'='your_junkies_password' \
238
+ -e 'JUNKIES_HOSTER'='your_desired_hoster' \
234
239
  ghcr.io/rix1337-sponsors/docker/helper:latest
235
240
  ```
236
241
 
@@ -239,8 +244,10 @@ docker run -d \
239
244
  * `QUASARR_URL` → Local URL of Quasarr
240
245
  * `DEATHBYCAPTCHA_TOKEN` → [DeathByCaptcha](https://deathbycaptcha.com/register?refid=6184288242b) account token
241
246
  * `GITHUB_TOKEN` → Classic GitHub PAT with the scopes listed above
242
- * `FLARESOLVERR_URL` → Local URL of [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
243
-
247
+ * `FLARESOLVERR_URL` → Local URL of [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) - required!
248
+ * `NX_USER` / `NX_PASS` → NX account credentials
249
+ * `JUNKIES_USER` / `JUNKIES_PASS` → Junkies account credentials
250
+ * `JUNKIES_HOSTER` → Preferred hoster for Junkies links
244
251
  ---
245
252
 
246
253
  ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
@@ -19,7 +19,7 @@ def get_links_comment(package, package_links):
19
19
  return None
20
20
 
21
21
 
22
- def get_links_status(package, all_links):
22
+ def get_links_status(package, all_links, is_archive=False):
23
23
  links_in_package = []
24
24
  package_uuid = package.get("uuid")
25
25
  if package_uuid and all_links:
@@ -65,6 +65,8 @@ def get_links_status(package, all_links):
65
65
  if eta and link_eta > eta or not eta:
66
66
  eta = link_eta
67
67
  all_finished = False
68
+ elif is_archive and link.get('status', '').lower() != 'extraction ok':
69
+ all_finished = False
68
70
 
69
71
  return {"all_finished": all_finished, "eta": eta, "error": error, "offline_mirror_linkids": offline_mirror_linkids}
70
72
 
@@ -188,7 +190,13 @@ def get_packages(shared_state):
188
190
  if downloader_packages and downloader_links:
189
191
  for package in downloader_packages:
190
192
  comment = get_links_comment(package, downloader_links)
191
- link_details = get_links_status(package, downloader_links)
193
+
194
+ try:
195
+ archive_info = shared_state.get_device().extraction.get_archive_info([], [package.get("uuid")])
196
+ is_archive = True if archive_info and archive_info[0] else False
197
+ except:
198
+ is_archive = True # in case of error assume archive to avoid false finished state
199
+ link_details = get_links_status(package, downloader_links, is_archive)
192
200
 
193
201
  error = link_details["error"]
194
202
  finished = link_details["all_finished"]
@@ -400,6 +400,29 @@ class Downloads:
400
400
  return resp
401
401
 
402
402
 
403
+ class Extraction:
404
+ """
405
+ Class that represents the extraction details of a Device
406
+ """
407
+
408
+ def __init__(self, device):
409
+ self.device = device
410
+ self.url = "/extraction"
411
+
412
+ def get_archive_info(self, link_ids=[], package_ids=[]):
413
+ """
414
+ Get ArchiveStatus for links and/or packages.
415
+
416
+ :param package_ids: Package UUID's.
417
+ :type: list of strings.
418
+ :param link_ids: link UUID's.
419
+ :type: list of strings
420
+ """
421
+ params = [link_ids, package_ids]
422
+ resp = self.device.action(self.url + "/getArchiveInfo", params)
423
+ return resp
424
+
425
+
403
426
  class Jddevice:
404
427
  """
405
428
  Class that represents a JDownloader device and it's functions
@@ -418,6 +441,7 @@ class Jddevice:
418
441
  self.config = Config(self)
419
442
  self.linkgrabber = Linkgrabber(self)
420
443
  self.downloads = Downloads(self)
444
+ self.extraction = Extraction(self)
421
445
  self.downloadcontroller = DownloadController(self)
422
446
  self.update = Update(self)
423
447
  self.__direct_connection_info = None
@@ -8,7 +8,7 @@ import requests
8
8
 
9
9
 
10
10
  def get_version():
11
- return "1.20.1"
11
+ return "1.20.3"
12
12
 
13
13
 
14
14
  def get_latest_version():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quasarr
3
- Version: 1.20.1
3
+ Version: 1.20.3
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
@@ -39,7 +39,7 @@ Quasarr pretends to be both `Newznab Indexer` and `SABnzbd client`. Therefore, d
39
39
  indexers or download clients. It simply does not know what NZB or torrent files are.
40
40
 
41
41
  Quasarr includes a solution to quickly and easily decrypt protected links.
42
- [Active Sponsors get access to SponsorsHelper to do so automatically.](https://github.com/rix1337/Quasarr?tab=readme-ov-file#sponsorshelper)
42
+ [Active monthly Sponsors get access to SponsorsHelper to do so automatically.](https://github.com/rix1337/Quasarr?tab=readme-ov-file#sponsorshelper)
43
43
  Alternatively, follow the link from the console output (or discord notification) to solve CAPTCHAs manually.
44
44
  Quasarr will confidently handle the rest.
45
45
 
@@ -258,6 +258,11 @@ docker run -d \
258
258
  -e 'DEATHBYCAPTCHA_TOKEN'='2FMum5zuDBxMmbXDIsADnllEFl73bomydIpzo7...' \
259
259
  -e 'GITHUB_TOKEN'='ghp_123.....456789' \
260
260
  -e 'FLARESOLVERR_URL'='http://10.10.0.1:8191/v1' \
261
+ -e 'NX_USER'='your_nx_username' \
262
+ -e 'NX_PASS'='your_nx_password' \
263
+ -e 'JUNKIES_USER'='your_junkies_username' \
264
+ -e 'JUNKIES_PASS'='your_junkies_password' \
265
+ -e 'JUNKIES_HOSTER'='your_desired_hoster' \
261
266
  ghcr.io/rix1337-sponsors/docker/helper:latest
262
267
  ```
263
268
 
@@ -266,8 +271,10 @@ docker run -d \
266
271
  * `QUASARR_URL` → Local URL of Quasarr
267
272
  * `DEATHBYCAPTCHA_TOKEN` → [DeathByCaptcha](https://deathbycaptcha.com/register?refid=6184288242b) account token
268
273
  * `GITHUB_TOKEN` → Classic GitHub PAT with the scopes listed above
269
- * `FLARESOLVERR_URL` → Local URL of [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)
270
-
274
+ * `FLARESOLVERR_URL` → Local URL of [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) - required!
275
+ * `NX_USER` / `NX_PASS` → NX account credentials
276
+ * `JUNKIES_USER` / `JUNKIES_PASS` → Junkies account credentials
277
+ * `JUNKIES_HOSTER` → Preferred hoster for Junkies links
271
278
  ---
272
279
 
273
280
  ⚠️ **Without a valid GitHub token linked to an active sponsorship, the image will not run.**
File without changes
File without changes
File without changes
File without changes