diff --git a/Whatsapp_Chat_Exporter/extract.py b/Whatsapp_Chat_Exporter/extract.py index 9a569d5..99aee80 100644 --- a/Whatsapp_Chat_Exporter/extract.py +++ b/Whatsapp_Chat_Exporter/extract.py @@ -15,7 +15,7 @@ from base64 import b64decode, b64encode from Whatsapp_Chat_Exporter.data_model import ChatStore, Message from Whatsapp_Chat_Exporter.utility import MAX_SIZE, ROW_SIZE, determine_metadata, get_status_location from Whatsapp_Chat_Exporter.utility import rendering, Crypt, Device, get_file_name, setup_template -from Whatsapp_Chat_Exporter.utility import brute_force_offset, CRYPT14_OFFSETS +from Whatsapp_Chat_Exporter.utility import brute_force_offset, CRYPT14_OFFSETS, JidType try: import zlib @@ -197,7 +197,8 @@ def messages(db, data, media_folder): message_system.action_type, message_system_group.is_me_joined, jid_old.raw_string as old_jid, - jid_new.raw_string as new_jid + jid_new.raw_string as new_jid, + jid_global.type as jid_type, FROM messages LEFT JOIN messages_quotes ON messages.quoted_row_id = messages_quotes._id @@ -243,7 +244,8 @@ def messages(db, data, media_folder): message_system.action_type, message_system_group.is_me_joined, jid_old.raw_string as old_jid, - jid_new.raw_string as new_jid + jid_new.raw_string as new_jid, + jid_global.type as jid_type, FROM message LEFT JOIN message_quoted ON message_quoted.message_row_id = message._id @@ -315,7 +317,7 @@ def messages(db, data, media_folder): i += 1 content = c.fetchone() continue - if (content["chat_subject"] is not None or "-" in content["key_remote_jid"]) and content["key_from_me"] == 0: + if content["jid_type"] == JidType.GROUP and content["key_from_me"] == 0: name = fallback = None if table_message: if content["sender_jid_row_id"] > 0: diff --git a/Whatsapp_Chat_Exporter/utility.py b/Whatsapp_Chat_Exporter/utility.py index 26f1df1..6490081 100644 --- a/Whatsapp_Chat_Exporter/utility.py +++ b/Whatsapp_Chat_Exporter/utility.py @@ -7,13 +7,15 @@ from datetime import datetime from enum import IntEnum from Whatsapp_Chat_Exporter.data_model import ChatStore try: - from enum import StrEnum + from enum import StrEnum, IntEnum except ImportError: # < Python 3.11 from enum import Enum class StrEnum(str, Enum): pass + class IntEnum(int, Enum): + pass MAX_SIZE = 4 * 1024 * 1024 # Default 4MB ROW_SIZE = 0x3D0 @@ -302,3 +304,9 @@ class WhatsAppBusinessIdentifier(StrEnum): MESSAGE = "724bd3b98b18518b455a87c1f3ac3a0d189c4466" CONTACT = "d7246a707f51ddf8b17ee2dddabd9e0a4da5c552" DOMAIN = "AppDomainGroup-group.net.whatsapp.WhatsAppSMB.shared" + +class JidType(IntEnum): + PM = 0 + GROUP = 1 + SYSTEM_BROADCAST = 5 + STATUS = 11