quasarr 2.1.4__tar.gz → 2.1.5__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 (87) hide show
  1. {quasarr-2.1.4 → quasarr-2.1.5}/PKG-INFO +1 -1
  2. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/api/packages/__init__.py +6 -9
  3. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/packages/__init__.py +4 -4
  4. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/version.py +1 -1
  5. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr.egg-info/PKG-INFO +1 -1
  6. {quasarr-2.1.4 → quasarr-2.1.5}/LICENSE +0 -0
  7. {quasarr-2.1.4 → quasarr-2.1.5}/README.md +0 -0
  8. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/__init__.py +0 -0
  9. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/api/__init__.py +0 -0
  10. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/api/arr/__init__.py +0 -0
  11. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/api/captcha/__init__.py +0 -0
  12. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/api/config/__init__.py +0 -0
  13. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/api/sponsors_helper/__init__.py +0 -0
  14. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/api/statistics/__init__.py +0 -0
  15. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/__init__.py +0 -0
  16. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/linkcrypters/__init__.py +0 -0
  17. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/linkcrypters/al.py +0 -0
  18. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/linkcrypters/filecrypt.py +0 -0
  19. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/linkcrypters/hide.py +0 -0
  20. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/__init__.py +0 -0
  21. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/al.py +0 -0
  22. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/by.py +0 -0
  23. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/dd.py +0 -0
  24. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/dj.py +0 -0
  25. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/dl.py +0 -0
  26. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/dt.py +0 -0
  27. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/dw.py +0 -0
  28. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/he.py +0 -0
  29. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/mb.py +0 -0
  30. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/nk.py +0 -0
  31. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/nx.py +0 -0
  32. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/sf.py +0 -0
  33. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/sj.py +0 -0
  34. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/sl.py +0 -0
  35. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/wd.py +0 -0
  36. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/downloads/sources/wx.py +0 -0
  37. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/__init__.py +0 -0
  38. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/auth.py +0 -0
  39. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/cloudflare.py +0 -0
  40. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/html_images.py +0 -0
  41. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/html_templates.py +0 -0
  42. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/imdb_metadata.py +0 -0
  43. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/jd_cache.py +0 -0
  44. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/log.py +0 -0
  45. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/myjd_api.py +0 -0
  46. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/notifications.py +0 -0
  47. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/obfuscated.py +0 -0
  48. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/sessions/__init__.py +0 -0
  49. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/sessions/al.py +0 -0
  50. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/sessions/dd.py +0 -0
  51. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/sessions/dl.py +0 -0
  52. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/sessions/nx.py +0 -0
  53. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/shared_state.py +0 -0
  54. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/statistics.py +0 -0
  55. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/utils.py +0 -0
  56. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/providers/web_server.py +0 -0
  57. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/__init__.py +0 -0
  58. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/__init__.py +0 -0
  59. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/al.py +0 -0
  60. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/by.py +0 -0
  61. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/dd.py +0 -0
  62. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/dj.py +0 -0
  63. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/dl.py +0 -0
  64. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/dt.py +0 -0
  65. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/dw.py +0 -0
  66. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/fx.py +0 -0
  67. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/he.py +0 -0
  68. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/mb.py +0 -0
  69. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/nk.py +0 -0
  70. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/nx.py +0 -0
  71. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/sf.py +0 -0
  72. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/sj.py +0 -0
  73. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/sl.py +0 -0
  74. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/wd.py +0 -0
  75. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/search/sources/wx.py +0 -0
  76. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/storage/__init__.py +0 -0
  77. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/storage/config.py +0 -0
  78. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/storage/setup.py +0 -0
  79. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr/storage/sqlite_database.py +0 -0
  80. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr.egg-info/SOURCES.txt +0 -0
  81. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr.egg-info/dependency_links.txt +0 -0
  82. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr.egg-info/entry_points.txt +0 -0
  83. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr.egg-info/not-zip-safe +0 -0
  84. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr.egg-info/requires.txt +0 -0
  85. {quasarr-2.1.4 → quasarr-2.1.5}/quasarr.egg-info/top_level.txt +0 -0
  86. {quasarr-2.1.4 → quasarr-2.1.5}/setup.cfg +0 -0
  87. {quasarr-2.1.4 → quasarr-2.1.5}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quasarr
3
- Version: 2.1.4
3
+ Version: 2.1.5
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
@@ -14,19 +14,15 @@ def _get_category_emoji(cat):
14
14
 
15
15
  def _format_size(mb=None, bytes_val=None):
16
16
  if bytes_val is not None:
17
- # Handle bytes directly for better precision with small files
18
17
  if bytes_val == 0:
19
18
  return "? MB"
20
- if bytes_val < 1024 * 1024: # Less than 1 MB
21
- kb = bytes_val / 1024
22
- if kb < 1:
23
- return f"{bytes_val} B"
24
- return f"{kb:.0f} KB"
19
+ if bytes_val < 1024:
20
+ return f"{bytes_val} B"
21
+ if bytes_val < 1024 * 1024:
22
+ return f"{bytes_val // 1024} KB"
25
23
  mb = bytes_val / (1024 * 1024)
26
24
  if mb is None or mb == 0:
27
25
  return "? MB"
28
- if mb < 1:
29
- return f"{mb * 1024:.0f} KB"
30
26
  if mb < 1024:
31
27
  return f"{mb:.0f} MB"
32
28
  return f"{mb / 1024:.1f} GB"
@@ -41,6 +37,7 @@ def _render_queue_item(item):
41
37
  percentage = item.get('percentage', 0)
42
38
  timeleft = item.get('timeleft', '??:??:??')
43
39
  bytes_val = item.get('bytes', 0)
40
+ mb = item.get('mb', 0)
44
41
  cat = item.get('cat', 'not_quasarr')
45
42
  is_archive = item.get('is_archive', False)
46
43
  nzo_id = item.get('nzo_id', '')
@@ -63,7 +60,7 @@ def _render_queue_item(item):
63
60
 
64
61
  archive_badge = '<span class="badge archive">📁</span>' if is_archive else ''
65
62
  cat_emoji = _get_category_emoji(cat)
66
- size_str = _format_size(bytes_val=bytes_val)
63
+ size_str = _format_size(bytes_val=bytes_val) if bytes_val else _format_size(mb=mb)
67
64
 
68
65
  # Progress bar - show "waiting..." for 0%
69
66
  if percentage == 0:
@@ -468,8 +468,10 @@ def get_packages(shared_state, _cache=None):
468
468
  details = package["details"]
469
469
  name = f"[Linkgrabber] {details.get('name', 'unknown')}"
470
470
  try:
471
- mb = mb_left = int(details.get("bytesTotal", 0)) / (1024 * 1024)
471
+ bytes_total = int(details.get("bytesTotal", 0))
472
+ mb = mb_left = bytes_total / (1024 * 1024)
472
473
  except (KeyError, TypeError, ValueError):
474
+ bytes_total = 0
473
475
  mb = mb_left = 0
474
476
  package_id = package["comment"]
475
477
  category = get_category_from_package_id(package_id)
@@ -505,6 +507,7 @@ def get_packages(shared_state, _cache=None):
505
507
  details = package["details"]
506
508
  name = f"[CAPTCHA not solved!] {details.get('title', 'unknown')}"
507
509
  mb = mb_left = details.get("size_mb") or 0
510
+ bytes_total = 0 # Protected packages don't have reliable byte data
508
511
  package_id = package.get("package_id")
509
512
  category = get_category_from_package_id(package_id)
510
513
  package_type = "protected"
@@ -519,9 +522,6 @@ def get_packages(shared_state, _cache=None):
519
522
  except (ZeroDivisionError, ValueError, TypeError):
520
523
  percentage = 0
521
524
 
522
- # Keep mb/mbleft as integers for API compatibility, add bytes for UI display
523
- bytes_total = int(mb * 1024 * 1024) if mb else 0
524
-
525
525
  downloads["queue"].append({
526
526
  "index": queue_index,
527
527
  "nzo_id": effective_id,
@@ -8,7 +8,7 @@ import requests
8
8
 
9
9
 
10
10
  def get_version():
11
- return "2.1.4"
11
+ return "2.1.5"
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: 2.1.4
3
+ Version: 2.1.5
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes