@@ -24,9 +24,10 @@ def dl_progress_update(data):
24
24
progress = data [2 ]
25
25
try :
26
26
if status is not None :
27
- if 'failed' == status .lower () or ' cancelled' == status . lower () :
27
+ if status .lower () in [ 'failed' , ' cancelled', 'unavailable' ] :
28
28
downloads_status [media_id ]["btn" ]['cancel' ].hide ()
29
- downloads_status [media_id ]["btn" ]['retry' ].show ()
29
+ if status .lower () != "unavailable" :
30
+ downloads_status [media_id ]["btn" ]['retry' ].show ()
30
31
if 'downloading' == status .lower ():
31
32
downloads_status [media_id ]["btn" ]['cancel' ].show ()
32
33
downloads_status [media_id ]["btn" ]['retry' ].hide ()
@@ -52,7 +53,7 @@ def dl_progress_update(data):
52
53
53
54
54
55
def retry_all_failed_downloads ():
55
- for dl_id in failed_downloads .keys ():
56
+ for dl_id in list ( failed_downloads .keys () ):
56
57
downloads_status [dl_id ]["status_label" ].setText ("Waiting" )
57
58
downloads_status [dl_id ]["btn" ]['cancel' ].show ()
58
59
downloads_status [dl_id ]["btn" ]['retry' ].hide ()
@@ -62,12 +63,12 @@ def retry_all_failed_downloads():
62
63
63
64
def cancel_all_downloads ():
64
65
for did in downloads_status .keys ():
66
+ print ('Trying to cancel : ' , did )
65
67
try :
66
- if downloads_status [did ]['progress_bar' ].value () < 95 :
67
- if did not in cancel_list :
68
- cancel_list [did ] = {}
68
+ if downloads_status [did ]['progress_bar' ].value () < 95 and did not in cancel_list :
69
+ cancel_list [did ] = {}
69
70
except (KeyError , RuntimeError ):
70
- pass
71
+ logger . info ( 'Cannot cancel media id: {did}, this might have been cleared' )
71
72
72
73
73
74
class MainWindow (QMainWindow ):
@@ -251,6 +252,23 @@ def __toggle_advanced(self):
251
252
252
253
def __add_item_to_downloads (self , item ):
253
254
# Create progress status
255
+ if item ['item_id' ] in downloads_status :
256
+ # If the item is in download status dictionary, it's not cleared from view
257
+ logger .info ('The media: {item["item"]} was already in view' )
258
+ if item ['item_id' ] in cancel_list :
259
+ logger .info ('The media: {item["item"]} was being cancelled, preventing cancellation !' )
260
+ cancel_list .pop (item ['item_id' ])
261
+ elif item ['item_id' ] in failed_downloads :
262
+ dl_id = item ['item_id' ]
263
+ logger .info ('The media: {item["item"]} had failed to download, re-downoading ! !' )
264
+ downloads_status [dl_id ]["status_label" ].setText ("Waiting" )
265
+ downloads_status [dl_id ]["btn" ]['cancel' ].show ()
266
+ downloads_status [dl_id ]["btn" ]['retry' ].hide ()
267
+ download_queue .put (failed_downloads [dl_id ].copy ())
268
+ failed_downloads .pop (dl_id )
269
+ else :
270
+ logger .info ('The media: {item["item"]} is already in queue and is being downloaded, ignoring.. !' )
271
+ return None
254
272
pbar = QProgressBar ()
255
273
pbar .setValue (0 )
256
274
cancel_btn = QPushButton ()
@@ -654,21 +672,10 @@ def __mass_action_dl(self, result_type):
654
672
655
673
def rem_complete_from_table (self ):
656
674
logger .info ('Clearing complete downloads' )
657
- complete_ids = []
658
- for dl_id in downloads_status .keys ():
659
- try :
660
- logger .info (f"Checking download status for media id: { dl_id } , "
661
- f"{ downloads_status [dl_id ]['progress_bar' ].value ()} " )
662
- if downloads_status [dl_id ]['progress_bar' ].value () == 100 or \
663
- downloads_status [dl_id ]['status_label' ].text ().lower () == 'cancelled' :
664
- logger .info (f'ID: { dl_id } is complete or cancelled' )
665
- complete_ids .append (dl_id )
666
- except (RuntimeError , AttributeError ):
667
- logger .info (f"Checking download status for media id: { dl_id } , Runtime error->Removing" )
668
- complete_ids .append (dl_id )
669
675
rows = self .tbl_dl_progress .rowCount ()
670
676
for i in range (rows ):
671
- id_val = self .tbl_dl_progress .item (i , 0 ).text ()
672
- if id_val in complete_ids :
677
+ progress = self .tbl_dl_progress .item (i , 5 ).value ()
678
+ status = self .tbl_dl_progress .item (i , 4 ).text ()
679
+ if progress == 100 or status in ['cancelled' , 'unavailable' ]:
673
680
self .tbl_dl_progress .removeRow (i )
674
- downloads_status .pop (id_val )
681
+ downloads_status .pop (self . tbl_dl_progress . item ( i , 0 ). text () )
0 commit comments