mirror of
https://github.com/KnugiHK/WhatsApp-Chat-Exporter.git
synced 2026-02-17 22:36:21 +00:00
Make ChatStore.messages private
This commit is contained in:
@@ -451,7 +451,7 @@ def media(db, data, media_folder, filter_date, filter_chat, filter_empty, separa
|
||||
Path(f"{media_folder}/thumbnails").mkdir(parents=True, exist_ok=True)
|
||||
while content is not None:
|
||||
file_path = f"{media_folder}/{content['file_path']}"
|
||||
message = data[content["key_remote_jid"]].messages[content["message_row_id"]]
|
||||
message = data[content["key_remote_jid"]].get_message(content["message_row_id"])
|
||||
message.media = True
|
||||
if os.path.isfile(file_path):
|
||||
message.data = file_path
|
||||
@@ -547,7 +547,7 @@ def vcard(db, data, media_folder, filter_date, filter_chat, filter_empty):
|
||||
if not os.path.isfile(file_path):
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(row["vcard"])
|
||||
message = data[row["key_remote_jid"]].messages[row["message_row_id"]]
|
||||
message = data[row["key_remote_jid"]].get_message(row["message_row_id"])
|
||||
message.data = "This media include the following vCard file(s):<br>" \
|
||||
f'<a href="{htmle(file_path)}">{htmle(media_name)}</a>'
|
||||
message.mime = "text/x-vcard"
|
||||
@@ -736,7 +736,7 @@ def create_txt(data, output):
|
||||
contact = jik.replace('+', '')
|
||||
output_file = os.path.join(output, f"{contact}.txt")
|
||||
with open(output_file, "w", encoding="utf8") as f:
|
||||
for message in chat.messages.values():
|
||||
for message in chat.get_messages():
|
||||
date = datetime.fromtimestamp(message.timestamp).date()
|
||||
if message.meta and message.mime != "media":
|
||||
continue # Skip any metadata in text format
|
||||
|
||||
@@ -74,7 +74,7 @@ class ChatStore:
|
||||
if name is not None and not isinstance(name, str):
|
||||
raise TypeError("Name must be a string or None")
|
||||
self.name = name
|
||||
self.messages: Dict[str, 'Message'] = {}
|
||||
self._messages: Dict[str, 'Message'] = {}
|
||||
self.type = type
|
||||
if media is not None:
|
||||
from Whatsapp_Chat_Exporter.utility import Device
|
||||
@@ -95,12 +95,16 @@ class ChatStore:
|
||||
"""Add a message to the chat store."""
|
||||
if not isinstance(message, Message):
|
||||
raise TypeError("message must be a Message object")
|
||||
self.messages[id] = message
|
||||
self._messages[id] = message
|
||||
|
||||
def get_message(self, id: str) -> 'Message':
|
||||
"""Get a message from the chat store."""
|
||||
return self._messages.get(id)
|
||||
|
||||
def delete_message(self, id: str) -> None:
|
||||
"""Delete a message from the chat store."""
|
||||
if id in self.messages:
|
||||
del self.messages[id]
|
||||
if id in self._messages:
|
||||
del self._messages[id]
|
||||
|
||||
def to_json(self) -> Dict[str, Any]:
|
||||
"""Convert chat store to JSON-serializable dict."""
|
||||
@@ -111,16 +115,16 @@ class ChatStore:
|
||||
'their_avatar': self.their_avatar,
|
||||
'their_avatar_thumb': self.their_avatar_thumb,
|
||||
'status': self.status,
|
||||
'messages': {id: msg.to_json() for id, msg in self.messages.items()}
|
||||
'messages': {id: msg.to_json() for id, msg in self._messages.items()}
|
||||
}
|
||||
|
||||
def get_last_message(self) -> 'Message':
|
||||
"""Get the most recent message in the chat."""
|
||||
return tuple(self.messages.values())[-1]
|
||||
return tuple(self._messages.values())[-1]
|
||||
|
||||
def get_messages(self) -> Dict[str, 'Message']:
|
||||
"""Get all messages in the chat."""
|
||||
return self.messages.values()
|
||||
return self._messages.values()
|
||||
|
||||
|
||||
class Message:
|
||||
|
||||
@@ -283,7 +283,7 @@ def media(db, data, media_folder, filter_date, filter_chat, filter_empty, separa
|
||||
file_path = f"{media_folder}/Message/{content['ZMEDIALOCALPATH']}"
|
||||
ZMESSAGE = content["ZMESSAGE"]
|
||||
contact = data[content["ZCONTACTJID"]]
|
||||
message = contact.messages[ZMESSAGE]
|
||||
message = contact.get_message(ZMESSAGE)
|
||||
message.media = True
|
||||
if contact.media_base == "":
|
||||
contact.media_base = media_folder + "/"
|
||||
@@ -367,7 +367,7 @@ def vcard(db, data, media_folder, filter_date, filter_chat, filter_empty):
|
||||
|
||||
vcard_summary = "This media include the following vCard file(s):<br>"
|
||||
vcard_summary += " | ".join([f'<a href="{htmle(fp)}">{htmle(name)}</a>' for name, fp in zip(vcard_names, file_paths)])
|
||||
message = data[content["ZCONTACTJID"]].messages[content["ZMESSAGE"]]
|
||||
message = data[content["ZCONTACTJID"]].get_message(content["ZMESSAGE"])
|
||||
message.data = vcard_summary
|
||||
message.mime = "text/x-vcard"
|
||||
message.media = True
|
||||
|
||||
Reference in New Issue
Block a user