quasarr 1.20.1__py3-none-any.whl → 1.20.3__py3-none-any.whl

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.

@@ -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.**
@@ -10,7 +10,7 @@ quasarr/downloads/linkcrypters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
10
10
  quasarr/downloads/linkcrypters/al.py,sha256=pM3NDan8x0WU8OS1GV3HuuV4B6Nm0a-ATrVORvLHt9M,8487
11
11
  quasarr/downloads/linkcrypters/filecrypt.py,sha256=GT51x_MG_hW4IpOF6OvL5r-2mTnMijI8K7_1D5Bfn4U,18884
12
12
  quasarr/downloads/linkcrypters/hide.py,sha256=kMxjsYZJpC1V3jwYv9b0h4HKBIectLlgglwOmexvFXs,4107
13
- quasarr/downloads/packages/__init__.py,sha256=C-6b_IgKQsmQWo5onTqFqx2pCOvPkT0oH-7jiopa8Hk,16748
13
+ quasarr/downloads/packages/__init__.py,sha256=TbmoBdgHDf09X-TnfOEKgppkCafy0ObeN3VvLMMyheM,17219
14
14
  quasarr/downloads/sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  quasarr/downloads/sources/al.py,sha256=Ulc4fTuX8_gOHeTJzZYEAgUCiFPoyczIdbZh6qA3jzM,26180
16
16
  quasarr/downloads/sources/by.py,sha256=VzytGYyy81vjsvNJabohoK8PkjYTKCwXM1TjeD3Ker0,3695
@@ -32,12 +32,12 @@ quasarr/providers/html_images.py,sha256=ZvSzG5Mbjol1I_exFHcb4BZ2eUQ3CqquY_MwRBlr
32
32
  quasarr/providers/html_templates.py,sha256=90O9RGwlpJB7jC8NZ0ggh9aD6LNM34IRSVsHCa9vSls,7825
33
33
  quasarr/providers/imdb_metadata.py,sha256=10L4kZkt6Fg0HGdNcc6KCtIQHRYEqdarLyaMVN6mT8w,4843
34
34
  quasarr/providers/log.py,sha256=_g5RwtfuksARXnvryhsngzoJyFcNzj6suqd3ndqZM0Y,313
35
- quasarr/providers/myjd_api.py,sha256=1R4uL8Zb8wp1VGcvaO0yMXt2NVGmu6Kn9-GIF4x7vU0,32054
35
+ quasarr/providers/myjd_api.py,sha256=vPiX-kOQk19ugciefw9wm_hw8djbT4o-Gk9w2XEBeI4,32707
36
36
  quasarr/providers/notifications.py,sha256=bohT-6yudmFnmZMc3BwCGX0n1HdzSVgQG_LDZm_38dI,4630
37
37
  quasarr/providers/obfuscated.py,sha256=YydQJHrZ485pHaXK0DHHRW3eLZygGr6c0xnUKD6mcCE,236502
38
38
  quasarr/providers/shared_state.py,sha256=4nswf5AuA4c1DWqSXsX0HXwlDt5e-UUUvQSy-vryCRE,28987
39
39
  quasarr/providers/statistics.py,sha256=cEQixYnDMDqtm5wWe40E_2ucyo4mD0n3SrfelhQi1L8,6452
40
- quasarr/providers/version.py,sha256=x-0kcMQZOwdQdDiZmiNTCq12f9Ta4T1Z1h2WJo9A89I,4004
40
+ quasarr/providers/version.py,sha256=gGTjGfWXw48sL5TIK_YqtPCWviMXUqnRZfTaQe-x8Wo,4004
41
41
  quasarr/providers/web_server.py,sha256=XPj98T-axxgotovuB-rVw1IPCkJiNdXBlEeFvM_zSlM,1432
42
42
  quasarr/providers/sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  quasarr/providers/sessions/al.py,sha256=mlP6SWfCY2HyOSV40uyotQ5T4eSBNYG9A5GWOEAdz-c,9589
@@ -64,9 +64,9 @@ quasarr/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  quasarr/storage/config.py,sha256=a0JAeiSqMQYBvfZTyYtOxDZvuLGP5lZhMHb7nX9azPc,6130
65
65
  quasarr/storage/setup.py,sha256=gpHOsc5qtt-M72saZoMJFLE2YlCrjv7FWZknh-iVKsk,17766
66
66
  quasarr/storage/sqlite_database.py,sha256=yMqFQfKf0k7YS-6Z3_7pj4z1GwWSXJ8uvF4IydXsuTE,3554
67
- quasarr-1.20.1.dist-info/licenses/LICENSE,sha256=QQFCAfDgt7lSA8oSWDHIZ9aTjFbZaBJdjnGOHkuhK7k,1060
68
- quasarr-1.20.1.dist-info/METADATA,sha256=i35trsO90WS0FAuMpjIJVON7x0mDxG5sIv2yQwWZVHQ,12249
69
- quasarr-1.20.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
- quasarr-1.20.1.dist-info/entry_points.txt,sha256=gXi8mUKsIqKVvn-bOc8E5f04sK_KoMCC-ty6b2Hf-jc,40
71
- quasarr-1.20.1.dist-info/top_level.txt,sha256=dipJdaRda5ruTZkoGfZU60bY4l9dtPlmOWwxK_oGSF0,8
72
- quasarr-1.20.1.dist-info/RECORD,,
67
+ quasarr-1.20.3.dist-info/licenses/LICENSE,sha256=QQFCAfDgt7lSA8oSWDHIZ9aTjFbZaBJdjnGOHkuhK7k,1060
68
+ quasarr-1.20.3.dist-info/METADATA,sha256=MS_HxaTINlvc1u1mRhcU_NuhYg4qa4y1Ifw70-_Y4gE,12653
69
+ quasarr-1.20.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
+ quasarr-1.20.3.dist-info/entry_points.txt,sha256=gXi8mUKsIqKVvn-bOc8E5f04sK_KoMCC-ty6b2Hf-jc,40
71
+ quasarr-1.20.3.dist-info/top_level.txt,sha256=dipJdaRda5ruTZkoGfZU60bY4l9dtPlmOWwxK_oGSF0,8
72
+ quasarr-1.20.3.dist-info/RECORD,,