From 92b8903521aeaf3ab900095cab1e6cd44378fffa Mon Sep 17 00:00:00 2001 From: GoComputing Date: Sat, 28 Jan 2023 20:51:40 +0100 Subject: [PATCH 1/2] Fixed JSON export Added serialization to the classes 'ChatStore' and 'Messages' so that they can be JSON serialized. --- Whatsapp_Chat_Exporter/__main__.py | 3 ++- Whatsapp_Chat_Exporter/data_model.py | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Whatsapp_Chat_Exporter/__main__.py b/Whatsapp_Chat_Exporter/__main__.py index b35d79a..69a6e46 100644 --- a/Whatsapp_Chat_Exporter/__main__.py +++ b/Whatsapp_Chat_Exporter/__main__.py @@ -184,7 +184,7 @@ def main(): messages(db, data) media(db, data, options.media) vcard(db, data) - create_html(data, options.output, options.template, options.embedded) + # create_html(data, options.output, options.template, options.embedded) else: print( "The message database does not exist. You may specify the path " @@ -202,6 +202,7 @@ def main(): "Perhaps the directory is opened?") if options.json: + data = {jik : chat.to_json() for jik,chat in data.items()} with open("result.json", "w") as f: data = json.dumps(data) print(f"\nWriting JSON file...({int(len(data)/1024/1024)}MB)") diff --git a/Whatsapp_Chat_Exporter/data_model.py b/Whatsapp_Chat_Exporter/data_model.py index 2e03c06..bd41394 100644 --- a/Whatsapp_Chat_Exporter/data_model.py +++ b/Whatsapp_Chat_Exporter/data_model.py @@ -18,6 +18,10 @@ class ChatStore(): if id in self.messages: del self.messages[id] + def to_json(self): + serialized_msgs = {id : msg.to_json() for id,msg in self.messages.items()} + return {'name' : self.name, 'messages' : serialized_msgs} + class Message(): def __init__(self, from_me: Union[bool,int], timestamp: int, time: str, key_id: int): self.from_me = bool(from_me) @@ -32,4 +36,18 @@ class Message(): self.reply = None self.quoted_data = None self.caption = None - + + def to_json(self): + return { + 'from_me' : self.from_me, + 'timestamp' : self.timestamp, + 'time' : self.time, + 'media' : self.media, + 'key_id' : self.key_id, + 'meta' : self.meta, + 'data' : self.data, + 'sender' : self.sender, + 'reply' : self.reply, + 'quoted_data' : self.quoted_data, + 'caption' : self.caption + } From 8f0511a6e22885d26da6e5cdf7f505ab34ee244f Mon Sep 17 00:00:00 2001 From: GoComputing Date: Fri, 24 Mar 2023 19:43:27 +0100 Subject: [PATCH 2/2] Re-enabled the HTML generation --- Whatsapp_Chat_Exporter/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Whatsapp_Chat_Exporter/__main__.py b/Whatsapp_Chat_Exporter/__main__.py index 69a6e46..93909c0 100644 --- a/Whatsapp_Chat_Exporter/__main__.py +++ b/Whatsapp_Chat_Exporter/__main__.py @@ -184,7 +184,7 @@ def main(): messages(db, data) media(db, data, options.media) vcard(db, data) - # create_html(data, options.output, options.template, options.embedded) + create_html(data, options.output, options.template, options.embedded) else: print( "The message database does not exist. You may specify the path "