quasarr 1.20.5__tar.gz → 1.20.7__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.
Files changed (78) hide show
  1. {quasarr-1.20.5 → quasarr-1.20.7}/PKG-INFO +1 -1
  2. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/packages/__init__.py +22 -3
  3. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/version.py +1 -1
  4. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr.egg-info/PKG-INFO +1 -1
  5. {quasarr-1.20.5 → quasarr-1.20.7}/LICENSE +0 -0
  6. {quasarr-1.20.5 → quasarr-1.20.7}/README.md +0 -0
  7. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/__init__.py +0 -0
  8. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/api/__init__.py +0 -0
  9. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/api/arr/__init__.py +0 -0
  10. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/api/captcha/__init__.py +0 -0
  11. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/api/config/__init__.py +0 -0
  12. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/api/sponsors_helper/__init__.py +0 -0
  13. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/api/statistics/__init__.py +0 -0
  14. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/__init__.py +0 -0
  15. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/linkcrypters/__init__.py +0 -0
  16. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/linkcrypters/al.py +0 -0
  17. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/linkcrypters/filecrypt.py +0 -0
  18. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/linkcrypters/hide.py +0 -0
  19. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/__init__.py +0 -0
  20. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/al.py +0 -0
  21. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/by.py +0 -0
  22. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/dd.py +0 -0
  23. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/dj.py +0 -0
  24. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/dt.py +0 -0
  25. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/dw.py +0 -0
  26. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/he.py +0 -0
  27. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/mb.py +0 -0
  28. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/nk.py +0 -0
  29. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/nx.py +0 -0
  30. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/sf.py +0 -0
  31. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/sj.py +0 -0
  32. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/sl.py +0 -0
  33. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/downloads/sources/wd.py +0 -0
  34. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/__init__.py +0 -0
  35. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/cloudflare.py +0 -0
  36. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/html_images.py +0 -0
  37. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/html_templates.py +0 -0
  38. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/imdb_metadata.py +0 -0
  39. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/log.py +0 -0
  40. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/myjd_api.py +0 -0
  41. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/notifications.py +0 -0
  42. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/obfuscated.py +0 -0
  43. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/sessions/__init__.py +0 -0
  44. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/sessions/al.py +0 -0
  45. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/sessions/dd.py +0 -0
  46. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/sessions/nx.py +0 -0
  47. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/shared_state.py +0 -0
  48. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/statistics.py +0 -0
  49. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/providers/web_server.py +0 -0
  50. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/__init__.py +0 -0
  51. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/__init__.py +0 -0
  52. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/al.py +0 -0
  53. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/by.py +0 -0
  54. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/dd.py +0 -0
  55. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/dj.py +0 -0
  56. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/dt.py +0 -0
  57. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/dw.py +0 -0
  58. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/fx.py +0 -0
  59. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/he.py +0 -0
  60. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/mb.py +0 -0
  61. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/nk.py +0 -0
  62. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/nx.py +0 -0
  63. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/sf.py +0 -0
  64. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/sj.py +0 -0
  65. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/sl.py +0 -0
  66. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/search/sources/wd.py +0 -0
  67. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/storage/__init__.py +0 -0
  68. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/storage/config.py +0 -0
  69. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/storage/setup.py +0 -0
  70. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr/storage/sqlite_database.py +0 -0
  71. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr.egg-info/SOURCES.txt +0 -0
  72. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr.egg-info/dependency_links.txt +0 -0
  73. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr.egg-info/entry_points.txt +0 -0
  74. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr.egg-info/not-zip-safe +0 -0
  75. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr.egg-info/requires.txt +0 -0
  76. {quasarr-1.20.5 → quasarr-1.20.7}/quasarr.egg-info/top_level.txt +0 -0
  77. {quasarr-1.20.5 → quasarr-1.20.7}/setup.cfg +0 -0
  78. {quasarr-1.20.5 → quasarr-1.20.7}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quasarr
3
- Version: 1.20.5
3
+ Version: 1.20.7
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
@@ -65,8 +65,12 @@ def get_links_status(package, all_links, is_archive=False):
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
+ elif is_archive:
69
+ # For archives, check if extraction is actually complete
70
+ link_status = link.get('status', '').lower()
71
+ # Check for various "extraction complete" indicators
72
+ if 'extraction ok' not in link_status and 'entpacken ok' not in link_status:
73
+ all_finished = False
70
74
 
71
75
  return {"all_finished": all_finished, "eta": eta, "error": error, "offline_mirror_linkids": offline_mirror_linkids}
72
76
 
@@ -192,17 +196,32 @@ def get_packages(shared_state):
192
196
  comment = get_links_comment(package, downloader_links)
193
197
 
194
198
  # Check if package is actually archived/extracted using archive info
199
+ is_archive = False
195
200
  try:
196
201
  archive_info = shared_state.get_device().extraction.get_archive_info([], [package.get("uuid")])
197
202
  is_archive = True if archive_info and archive_info[0] else False
198
203
  except:
199
- is_archive = True # in case of error assume archive to avoid false finished state
204
+ # On error, don't assume it's an archive - check bytes instead
205
+ pass
200
206
 
201
207
  link_details = get_links_status(package, downloader_links, is_archive)
202
208
 
203
209
  error = link_details["error"]
204
210
  finished = link_details["all_finished"]
205
211
 
212
+ # Additional check: if download is 100% complete and no ETA, it's finished
213
+ # This catches non-archive packages or when archive detection fails
214
+ if not finished and not error:
215
+ bytes_total = int(package.get("bytesTotal", 0))
216
+ bytes_loaded = int(package.get("bytesLoaded", 0))
217
+ eta = package.get("eta")
218
+
219
+ # If download is complete and no ETA (paused/finished state)
220
+ if bytes_total > 0 and bytes_loaded >= bytes_total and eta is None:
221
+ # Only mark as finished if it's not an archive, or if we can't detect archives
222
+ if not is_archive:
223
+ finished = True
224
+
206
225
  if not finished and link_details["eta"]:
207
226
  package["eta"] = link_details["eta"]
208
227
 
@@ -8,7 +8,7 @@ import requests
8
8
 
9
9
 
10
10
  def get_version():
11
- return "1.20.5"
11
+ return "1.20.7"
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.5
3
+ Version: 1.20.7
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