21
21
class internal_func (Ui_MainProgram ):
22
22
def __init__ (self ):
23
23
super ().__init__ ()
24
- self .logger = default_logger ("Downloader" )
25
24
26
25
def error_msg (self , text , msg_details , title = "Error" , critical = False ):
27
26
msg = QMessageBox ()
@@ -250,49 +249,51 @@ def download_install_thread(data, progress_current, progress_main):
250
249
if not os .path .exists (dwnpath ):
251
250
os .makedirs (dwnpath )
252
251
path_lst = {}
253
- d = Pypdl (allow_reuse = True , logger = self .logger )
252
+ logger , handler = default_logger ("Downloader" )
253
+ d = Pypdl (allow_reuse = True , logger = logger )
254
254
for f_name in final_data :
255
255
# Define the remote file to retrieve
256
256
remote_url = main_dict [f_name ] # {f_name:url}
257
257
# Download remote and save locally
258
258
path = f"{ dwnpath } { f_name } "
259
259
260
- def new_url_gen ():
261
- urls = asyncio .run (
262
- url_generator (
263
- self .url ,
264
- self .ignore_ver ,
265
- self .all_dependencies ,
266
- self .stop ,
267
- progress_current ,
268
- progress_main ,
269
- emit = False ,
270
- )
260
+ async def new_url_gen ():
261
+ urls = await url_generator (
262
+ self .url ,
263
+ self .ignore_ver ,
264
+ self .all_dependencies ,
265
+ self .stop ,
266
+ progress_current ,
267
+ progress_main ,
268
+ emit = False ,
271
269
)
270
+
272
271
return urls [0 ][f_name ]
273
272
274
- d .start (
275
- remote_url ,
276
- path ,
277
- 20 ,
273
+ future = d .start (
274
+ url = remote_url ,
275
+ file_path = path ,
276
+ segments = 10 ,
278
277
retries = 3 ,
279
- mirror_func = new_url_gen ,
278
+ mirrors = new_url_gen ,
280
279
block = False ,
281
280
display = False ,
282
281
overwrite = False ,
283
282
)
284
283
285
284
while not d .completed :
286
- download_percentage = int (d .progress )
285
+ download_percentage = int (d .progress ) if d . progress else 0
287
286
progress_current .emit (download_percentage )
288
287
time .sleep (0.1 )
289
288
if self .stop .is_set (): # check if the stop event is triggered
290
- d .stop ()
291
289
d .shutdown ()
290
+ handler .close ()
292
291
raise Exception ("Stoped By User!" )
293
- if d .failed :
294
- d .shutdown ()
295
- raise Exception ("Download Error Occured!" )
292
+
293
+ if len (d .failed ) == d .total_task :
294
+ d .shutdown ()
295
+ handler .close ()
296
+ raise Exception ("Download Error Occured!" )
296
297
297
298
progress_main .emit (part )
298
299
@@ -302,7 +303,10 @@ def new_url_gen():
302
303
else :
303
304
path_lst [path ] = 0
304
305
306
+ future .result ()
305
307
d .shutdown ()
308
+
309
+ handler .close ()
306
310
return path_lst , uwp # install the apps'
307
311
308
312
worker = Worker (lambda ** kwargs : download_install_thread (arg , ** kwargs ))
0 commit comments