Add tqdm progress bar

This commit is contained in:
KnugiHK
2026-01-19 20:49:14 +08:00
parent 908d8f71ca
commit 8058ed8219

View File

@@ -498,7 +498,8 @@ def _format_message_text(text):
def _get_reactions(db, data): def _get_reactions(db, data):
""" """
Process message reactions. Process message reactions. Only new schema is supported.
Chat filter is not applied here at the moment. Maybe in the future.
""" """
c = db.cursor() c = db.cursor()
@@ -507,7 +508,7 @@ def _get_reactions(db, data):
c.execute("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='message_add_on'") c.execute("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='message_add_on'")
if c.fetchone()[0] == 0: if c.fetchone()[0] == 0:
return return
logger.info("Processing reactions...\r") logger.info("Processing reactions...\r")
c.execute(""" c.execute("""
@@ -531,35 +532,38 @@ def _get_reactions(db, data):
logger.warning(f"Could not fetch reactions (schema might be too old or incompatible){CLEAR_LINE}") logger.warning(f"Could not fetch reactions (schema might be too old or incompatible){CLEAR_LINE}")
return return
row = c.fetchone() rows = c.fetchall()
while row is not None: total_row_number = len(rows)
parent_id = row["parent_message_row_id"]
reaction = row["reaction"] with tqdm(total=total_row_number, desc="Processing reactions", unit="reaction", leave=False) as pbar:
chat_id = row["chat_jid_raw"] for row in rows:
parent_id = row["parent_message_row_id"]
if chat_id and chat_id in data: reaction = row["reaction"]
chat = data[chat_id] chat_id = row["chat_jid_raw"]
if parent_id in chat._messages:
message = chat._messages[parent_id] if chat_id and chat_id in data:
chat = data[chat_id]
# Determine sender name if parent_id in chat._messages:
sender_name = None message = chat._messages[parent_id]
if row["from_me"]:
sender_name = "You" # Determine sender name
elif row["sender_jid_raw"]: sender_name = None
sender_jid = row["sender_jid_raw"] if row["from_me"]:
if sender_jid in data: sender_name = "You"
sender_name = data[sender_jid].name elif row["sender_jid_raw"]:
sender_jid = row["sender_jid_raw"]
if sender_jid in data:
sender_name = data[sender_jid].name
if not sender_name:
sender_name = sender_jid.split('@')[0] if "@" in sender_jid else sender_jid
if not sender_name: if not sender_name:
sender_name = sender_jid.split('@')[0] if "@" in sender_jid else sender_jid sender_name = "Unknown"
if not sender_name:
sender_name = "Unknown"
message.reactions[sender_name] = reaction message.reactions[sender_name] = reaction
pbar.update(1)
row = c.fetchone() total_time = pbar.format_dict['elapsed']
logger.info(f"Processed reactions{CLEAR_LINE}") logger.info(f"Processed {total_row_number} reactions in {convert_time_unit(total_time)}{CLEAR_LINE}")
def media(db, data, media_folder, filter_date, filter_chat, filter_empty, separate_media=True, fix_dot_files=False): def media(db, data, media_folder, filter_date, filter_chat, filter_empty, separate_media=True, fix_dot_files=False):