14
14
import praw .exceptions
15
15
import praw .models
16
16
import prawcore
17
- from tqdm import tqdm
18
- from tqdm .contrib .logging import logging_redirect_tqdm
19
17
20
18
from bdfr import exceptions as errors
21
19
from bdfr .configuration import Configuration
22
20
from bdfr .connector import RedditConnector
21
+ from bdfr .progress_bar import Progress
23
22
from bdfr .site_downloaders .download_factory import DownloadFactory
24
23
25
24
logger = logging .getLogger (__name__ )
26
- logger_progress_bar = logging .getLogger ("progress_bar" )
27
25
28
26
29
27
def _calc_hash (existing_file : Path ):
@@ -45,28 +43,16 @@ def __init__(self, args: Configuration):
45
43
self .master_hash_list = self .scan_existing_files (self .download_directory )
46
44
47
45
def download (self ):
48
- if self .args .progress_bar :
49
- with logging_redirect_tqdm ():
50
- for generator in tqdm (self .reddit_lists , desc = "Subreddits" , unit = "subreddit" , colour = "red" ):
51
- desc = generator .url if isinstance (generator , praw .models .ListingGenerator ) else "Posts"
52
- for submission in tqdm (list (generator ), desc = desc , unit = "post" , colour = "green" , leave = False ):
53
- title_short = submission .title [:60 ] + (submission .title [60 :] and "..." )
54
- log_str = f"{ submission .score :5d} 🔼 { title_short } "
55
- try :
56
- if self ._download_submission (submission ):
57
- logger_progress_bar .info (f"✅ { log_str } " )
58
- else :
59
- logger_progress_bar .info (f"❌ { log_str } " )
60
- except prawcore .PrawcoreException as e :
61
- logger .error (f"Submission { submission .id } failed to download due to a PRAW exception: { e } " )
62
- logger_progress_bar .info (f"❌ { log_str } " )
63
- else :
64
- for generator in self .reddit_lists :
65
- for submission in generator :
46
+ progress = Progress (self .args .progress_bar )
47
+ with progress .context ():
48
+ for generator in progress .wrap_subreddit_iter (self .reddit_lists ):
49
+ for submission in progress .wrap_post_iter (generator ):
66
50
try :
67
- self ._download_submission (submission )
51
+ status = self ._download_submission (submission )
52
+ progress .post_log (submission , status )
68
53
except prawcore .PrawcoreException as e :
69
54
logger .error (f"Submission { submission .id } failed to download due to a PRAW exception: { e } " )
55
+ progress .post_log (submission , False )
70
56
71
57
def _download_submission (self , submission : praw .models .Submission ):
72
58
if submission .id in self .excluded_submission_ids :
0 commit comments