summaryrefslogtreecommitdiff
path: root/snaparser.py
blob: eead386ffd1707bec779228272d7f017a11bf060 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import json

path = ''

chat_history = json.load(open(path + 'chat_history.json'))

received_saved = chat_history['Received Saved Chat History']

sent_saved = chat_history['Sent Saved Chat History']

conversations = {}

def clean_message_in_chat(chat):
    message = chat['Text']
    cleaned = message.replace("'", "'")
    chat['Text'] = cleaned
    return chat

for received in received_saved:
    if (received['Media Type'] != 'MEDIA'):
        chat = received['From']
        cleaned_chat = clean_message_in_chat(received)
        if chat in conversations:
            conversations[chat]['messages'] += [cleaned_chat]
        else:
            conversations[chat] = {
                'messages': [cleaned_chat]
            }

for sent in sent_saved:
    if (sent['Media Type'] != 'MEDIA'):
        chat = sent['To']
        cleaned_chat = clean_message_in_chat(sent)
        if chat in conversations:
            conversations[chat]['messages'] += [cleaned_chat]
        else:
            conversations[chat] = {
                'messages': [cleaned_chat]
            }

for chat, content in conversations.items():
    messages = content['messages']
    msgs_sorted_by_date = sorted(messages, key = lambda x:x['Created'])
    content['messages'] = msgs_sorted_by_date

for idx, chat in enumerate(conversations):
    print(f"{idx}: {chat} (Messages: {len(conversations[chat]['messages'])})")

selected_chat_idx = input("Select a chat: ")
selected_chat = list(conversations.values())[int(selected_chat_idx)]

messages = selected_chat['messages']
for message in messages:
    print("\n")
    message_content = message['Text']
    time = message['Created']
    if 'From' in message:
        recipient = message['From']
        print(message_content)
        print(f"From: {recipient}")
        print(time)
    else:
        recipient = message['To']
        if (len(message_content) >= 150):
            for submessage in list(message_content[0+i:150+i] for i in range(0, len(message_content), 150)):
                print(submessage.rjust(150))
        else:
            print(message_content.rjust(150))
        print(f"To: {recipient}".rjust(150))
        print(time.rjust(150))