quasarr 1.20.6__py3-none-any.whl → 1.20.8__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.
- quasarr/downloads/packages/__init__.py +16 -7
- quasarr/downloads/sources/nk.py +8 -5
- quasarr/providers/version.py +1 -1
- {quasarr-1.20.6.dist-info → quasarr-1.20.8.dist-info}/METADATA +1 -1
- {quasarr-1.20.6.dist-info → quasarr-1.20.8.dist-info}/RECORD +9 -9
- {quasarr-1.20.6.dist-info → quasarr-1.20.8.dist-info}/WHEEL +0 -0
- {quasarr-1.20.6.dist-info → quasarr-1.20.8.dist-info}/entry_points.txt +0 -0
- {quasarr-1.20.6.dist-info → quasarr-1.20.8.dist-info}/licenses/LICENSE +0 -0
- {quasarr-1.20.6.dist-info → quasarr-1.20.8.dist-info}/top_level.txt +0 -0
|
@@ -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
|
|
69
|
-
|
|
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,26 +196,31 @@ 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
|
-
|
|
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
|
|
|
206
|
-
# Additional check
|
|
207
|
-
#
|
|
208
|
-
if not finished and not error
|
|
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:
|
|
209
215
|
bytes_total = int(package.get("bytesTotal", 0))
|
|
210
216
|
bytes_loaded = int(package.get("bytesLoaded", 0))
|
|
211
217
|
eta = package.get("eta")
|
|
212
218
|
|
|
219
|
+
# If download is complete and no ETA (paused/finished state)
|
|
213
220
|
if bytes_total > 0 and bytes_loaded >= bytes_total and eta is None:
|
|
214
|
-
finished
|
|
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
|
|
215
224
|
|
|
216
225
|
if not finished and link_details["eta"]:
|
|
217
226
|
package["eta"] = link_details["eta"]
|
quasarr/downloads/sources/nk.py
CHANGED
|
@@ -8,6 +8,7 @@ from bs4 import BeautifulSoup
|
|
|
8
8
|
from quasarr.providers.log import info
|
|
9
9
|
|
|
10
10
|
hostname = "nk"
|
|
11
|
+
supported_mirrors = ["rapidgator", "ddownload"]
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
def get_nk_download_links(shared_state, url, mirror, title):
|
|
@@ -28,9 +29,14 @@ def get_nk_download_links(shared_state, url, mirror, title):
|
|
|
28
29
|
anchors = soup.select('a.btn-orange')
|
|
29
30
|
candidates = []
|
|
30
31
|
for a in anchors:
|
|
32
|
+
mirror = a.text.strip().lower()
|
|
33
|
+
if mirror == 'ddl.to':
|
|
34
|
+
mirror = 'ddownload'
|
|
35
|
+
|
|
36
|
+
if mirror not in supported_mirrors:
|
|
37
|
+
continue
|
|
31
38
|
|
|
32
39
|
href = a.get('href', '').strip()
|
|
33
|
-
hoster = href.split('/')[3].lower()
|
|
34
40
|
if not href.lower().startswith(('http://', 'https://')):
|
|
35
41
|
href = 'https://' + host + href
|
|
36
42
|
|
|
@@ -40,10 +46,7 @@ def get_nk_download_links(shared_state, url, mirror, title):
|
|
|
40
46
|
info(f"{hostname}: could not resolve download link for {title}: {e}")
|
|
41
47
|
continue
|
|
42
48
|
|
|
43
|
-
|
|
44
|
-
hoster = 'ddownload'
|
|
45
|
-
|
|
46
|
-
candidates.append([href, hoster])
|
|
49
|
+
candidates.append([href, mirror])
|
|
47
50
|
|
|
48
51
|
if not candidates:
|
|
49
52
|
info(f"No external download links found on {hostname} page for {title}")
|
quasarr/providers/version.py
CHANGED
|
@@ -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=
|
|
13
|
+
quasarr/downloads/packages/__init__.py,sha256=Cub3ztyFYBm30HprvZl7qvfYnjaOH9FsRWDLEyCPHkE,18305
|
|
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
|
|
@@ -20,7 +20,7 @@ quasarr/downloads/sources/dt.py,sha256=fzAyJy8nmqTAFRObvaRbvsXdBkCo5JuojCJYQMYuP
|
|
|
20
20
|
quasarr/downloads/sources/dw.py,sha256=15UH-kBZt06GS5CDi-TTJGV_H59mQO0Nl-y3nYA5kOk,2504
|
|
21
21
|
quasarr/downloads/sources/he.py,sha256=EZ42WIHE8rwvpvwesaWeG__1dUBq75OQzJ1n7Lgrx1g,3450
|
|
22
22
|
quasarr/downloads/sources/mb.py,sha256=IS5_RdACD3yterFEAj_N7RIH4TVK-VEauZqfya23hmA,1411
|
|
23
|
-
quasarr/downloads/sources/nk.py,sha256=
|
|
23
|
+
quasarr/downloads/sources/nk.py,sha256=qA1qIOthu-Jt93ykPzE-gvSFEfA5YSIMNDymIWD98Tc,1538
|
|
24
24
|
quasarr/downloads/sources/nx.py,sha256=nI0c-oM1g_EyW06_o2wFgn_jm_Zh1XMy3kbRCN0hw1E,3211
|
|
25
25
|
quasarr/downloads/sources/sf.py,sha256=PDBuWgJmEYmD1b-5blS3YWgrqIhJjfwz91IuiMy6rX8,6224
|
|
26
26
|
quasarr/downloads/sources/sj.py,sha256=d2HC52SFYXUXAr7AIaipthVvL-WpvJaD-8AuN-5Z-I8,214
|
|
@@ -37,7 +37,7 @@ quasarr/providers/notifications.py,sha256=bohT-6yudmFnmZMc3BwCGX0n1HdzSVgQG_LDZm
|
|
|
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=
|
|
40
|
+
quasarr/providers/version.py,sha256=9Qj2WKI6t9PhJ-I5iwExX3pOFRYnxcHmCX97EiV4xsw,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.
|
|
68
|
-
quasarr-1.20.
|
|
69
|
-
quasarr-1.20.
|
|
70
|
-
quasarr-1.20.
|
|
71
|
-
quasarr-1.20.
|
|
72
|
-
quasarr-1.20.
|
|
67
|
+
quasarr-1.20.8.dist-info/licenses/LICENSE,sha256=QQFCAfDgt7lSA8oSWDHIZ9aTjFbZaBJdjnGOHkuhK7k,1060
|
|
68
|
+
quasarr-1.20.8.dist-info/METADATA,sha256=hXb-QMlycS1yTS_rn8fXB6FlLXH094aZ2Wl3ASi-dag,12653
|
|
69
|
+
quasarr-1.20.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
70
|
+
quasarr-1.20.8.dist-info/entry_points.txt,sha256=gXi8mUKsIqKVvn-bOc8E5f04sK_KoMCC-ty6b2Hf-jc,40
|
|
71
|
+
quasarr-1.20.8.dist-info/top_level.txt,sha256=dipJdaRda5ruTZkoGfZU60bY4l9dtPlmOWwxK_oGSF0,8
|
|
72
|
+
quasarr-1.20.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|