From 064b923cfa859055ff9020fba16914f32497299f Mon Sep 17 00:00:00 2001 From: KnugiHK <24708955+KnugiHK@users.noreply.github.com> Date: Sat, 17 Jan 2026 13:22:56 +0800 Subject: [PATCH] Convert time unit for progress --- Whatsapp_Chat_Exporter/__main__.py | 4 ++-- Whatsapp_Chat_Exporter/android_handler.py | 12 ++++++------ Whatsapp_Chat_Exporter/exported_handler.py | 4 ++-- Whatsapp_Chat_Exporter/ios_handler.py | 12 ++++++------ Whatsapp_Chat_Exporter/ios_media_handler.py | 6 +++--- Whatsapp_Chat_Exporter/utility.py | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Whatsapp_Chat_Exporter/__main__.py b/Whatsapp_Chat_Exporter/__main__.py index eb96fc7..28c0f43 100644 --- a/Whatsapp_Chat_Exporter/__main__.py +++ b/Whatsapp_Chat_Exporter/__main__.py @@ -12,7 +12,7 @@ import importlib.metadata from Whatsapp_Chat_Exporter import android_crypt, exported_handler, android_handler from Whatsapp_Chat_Exporter import ios_handler, ios_media_handler from Whatsapp_Chat_Exporter.data_model import ChatCollection, ChatStore -from Whatsapp_Chat_Exporter.utility import APPLE_TIME, CLEAR_LINE, Crypt, check_update +from Whatsapp_Chat_Exporter.utility import APPLE_TIME, CLEAR_LINE, Crypt, check_update, convert_time_unit from Whatsapp_Chat_Exporter.utility import readable_to_bytes, safe_name, bytes_to_readable from Whatsapp_Chat_Exporter.utility import import_from_json, incremental_merge, DbType from Whatsapp_Chat_Exporter.utility import telegram_json_format @@ -686,7 +686,7 @@ def export_multiple_json(args, data: Dict) -> None: f.write(file_content) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Generated {total} JSON files in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Generated {total} JSON files in {convert_time_unit(total_time)}{CLEAR_LINE}") def process_exported_chat(args, data: ChatCollection) -> None: diff --git a/Whatsapp_Chat_Exporter/android_handler.py b/Whatsapp_Chat_Exporter/android_handler.py index 1edabb8..6b7e919 100644 --- a/Whatsapp_Chat_Exporter/android_handler.py +++ b/Whatsapp_Chat_Exporter/android_handler.py @@ -56,7 +56,7 @@ def contacts(db, data, enrich_from_vcards): current_chat.status = row["status"] pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} contacts in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} contacts in {convert_time_unit(total_time)}{CLEAR_LINE}") return True @@ -92,7 +92,7 @@ def messages(db, data, media_folder, timezone_offset, filter_date, filter_chat, _process_single_message(data, content, table_message, timezone_offset) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} messages in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} messages in {convert_time_unit(total_time)}{CLEAR_LINE}") # Helper functions for message processing @@ -508,7 +508,7 @@ def media(db, data, media_folder, filter_date, filter_chat, filter_empty, separa _process_single_media(data, content, media_folder, mime, separate_media) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} media in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} media in {convert_time_unit(total_time)}{CLEAR_LINE}") # Helper functions for media processing @@ -696,7 +696,7 @@ def vcard(db, data, media_folder, filter_date, filter_chat, filter_empty): _process_vcard_row(row, path, data) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} vCards in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} vCards in {convert_time_unit(total_time)}{CLEAR_LINE}") def _execute_vcard_query_modern(c, filter_date, filter_chat, filter_empty): """Execute vCard query for modern WhatsApp database schema.""" @@ -809,7 +809,7 @@ def calls(db, data, timezone_offset, filter_chat): # Add the calls chat to the data data.add_chat("000000000000000", chat) - logger.info(f"Processed {total_row_number} calls in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} calls in {convert_time_unit(total_time)}{CLEAR_LINE}") def _get_calls_count(c, filter_chat): """Get the count of call records that match the filter.""" @@ -975,7 +975,7 @@ def create_html( pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Generated {total_row_number} chats in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Generated {total_row_number} chats in {convert_time_unit(total_time)}{CLEAR_LINE}") def _generate_single_chat(current_chat, safe_file_name, name, contact, output_folder, template, w3css, headline): """Generate a single HTML file for a chat.""" diff --git a/Whatsapp_Chat_Exporter/exported_handler.py b/Whatsapp_Chat_Exporter/exported_handler.py index caa3bc1..984dbe1 100644 --- a/Whatsapp_Chat_Exporter/exported_handler.py +++ b/Whatsapp_Chat_Exporter/exported_handler.py @@ -6,7 +6,7 @@ from datetime import datetime from mimetypes import MimeTypes from tqdm import tqdm from Whatsapp_Chat_Exporter.data_model import ChatStore, Message -from Whatsapp_Chat_Exporter.utility import CLEAR_LINE, Device +from Whatsapp_Chat_Exporter.utility import CLEAR_LINE, Device, convert_time_unit logger = logging.getLogger(__name__) @@ -43,7 +43,7 @@ def messages(path, data, assume_first_as_me=False): ) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} messages & media in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} messages & media in {convert_time_unit(total_time)}{CLEAR_LINE}") return data diff --git a/Whatsapp_Chat_Exporter/ios_handler.py b/Whatsapp_Chat_Exporter/ios_handler.py index c18ef8d..3dba02e 100644 --- a/Whatsapp_Chat_Exporter/ios_handler.py +++ b/Whatsapp_Chat_Exporter/ios_handler.py @@ -35,7 +35,7 @@ def contacts(db, data): data.add_chat(zwhatsapp_id, current_chat) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Pre-processed {total_row_number} contacts in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Pre-processed {total_row_number} contacts in {convert_time_unit(total_time)}{CLEAR_LINE}") def process_contact_avatars(current_chat, media_folder, contact_id): @@ -132,7 +132,7 @@ def messages(db, data, media_folder, timezone_offset, filter_date, filter_chat, process_contact_avatars(current_chat, media_folder, contact_id) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} contacts in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} contacts in {convert_time_unit(total_time)}{CLEAR_LINE}") # Get message count message_count_query = f""" @@ -226,7 +226,7 @@ def messages(db, data, media_folder, timezone_offset, filter_date, filter_chat, pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} messages in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} messages in {convert_time_unit(total_time)}{CLEAR_LINE}") def process_message_data(message, content, is_group_message, data, message_map, no_reply): @@ -373,7 +373,7 @@ def media(db, data, media_folder, filter_date, filter_chat, filter_empty, separa process_media_item(content, data, media_folder, mime, separate_media) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} media in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} media in {convert_time_unit(total_time)}{CLEAR_LINE}") def process_media_item(content, data, media_folder, mime, separate_media): @@ -464,7 +464,7 @@ def vcard(db, data, media_folder, filter_date, filter_chat, filter_empty): process_vcard_item(content, path, data) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Processed {total_row_number} vCards in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} vCards in {convert_time_unit(total_time)}{CLEAR_LINE}") def process_vcard_item(content, path, data): @@ -556,7 +556,7 @@ def calls(db, data, timezone_offset, filter_chat): # Add calls chat to data data.add_chat("000000000000000", chat) - logger.info(f"Processed {total_row_number} calls in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Processed {total_row_number} calls in {convert_time_unit(total_time)}{CLEAR_LINE}") def process_call_record(content, chat, data, timezone_offset): diff --git a/Whatsapp_Chat_Exporter/ios_media_handler.py b/Whatsapp_Chat_Exporter/ios_media_handler.py index bae3ebd..56df3d0 100644 --- a/Whatsapp_Chat_Exporter/ios_media_handler.py +++ b/Whatsapp_Chat_Exporter/ios_media_handler.py @@ -8,7 +8,7 @@ import getpass from sys import exit, platform as osname import sys from tqdm import tqdm -from Whatsapp_Chat_Exporter.utility import CLEAR_LINE, WhatsAppIdentifier +from Whatsapp_Chat_Exporter.utility import CLEAR_LINE, WhatsAppIdentifier, convert_time_unit from Whatsapp_Chat_Exporter.bplist import BPListReader try: from iphone_backup_decrypt import EncryptedBackup, RelativePath @@ -150,7 +150,7 @@ class BackupExtractor: ) total_time = pbar.format_dict['elapsed'] pbar.close() - logger.info(f"All required files are decrypted and extracted in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"All required files are decrypted and extracted in {convert_time_unit(total_time)}{CLEAR_LINE}") def _extract_unencrypted_backup(self): """ @@ -236,7 +236,7 @@ class BackupExtractor: os.utime(destination, (modification, modification)) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Extracted {total_row_number} WhatsApp files in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Extracted {total_row_number} WhatsApp files in {convert_time_unit(total_time)}{CLEAR_LINE}") def extract_media(base_dir, identifiers, decrypt_chunk_size): diff --git a/Whatsapp_Chat_Exporter/utility.py b/Whatsapp_Chat_Exporter/utility.py index e132b62..0260a25 100644 --- a/Whatsapp_Chat_Exporter/utility.py +++ b/Whatsapp_Chat_Exporter/utility.py @@ -254,7 +254,7 @@ def import_from_json(json_file: str, data: ChatCollection): data.add_chat(jid, chat) pbar.update(1) total_time = pbar.format_dict['elapsed'] - logger.info(f"Imported {total_row_number} chats from JSON in {total_time:.2f} seconds{CLEAR_LINE}") + logger.info(f"Imported {total_row_number} chats from JSON in {convert_time_unit(total_time)}{CLEAR_LINE}") def incremental_merge(source_dir: str, target_dir: str, media_dir: str, pretty_print_json: int, avoid_encoding_json: bool):