mirror of
https://github.com/KnugiHK/WhatsApp-Chat-Exporter.git
synced 2026-05-26 02:49:21 +00:00
Implement CSS for metadata
This commit is contained in:
@@ -119,7 +119,9 @@ def messages(db, data):
|
|||||||
"timestamp": content[3]/1000,
|
"timestamp": content[3]/1000,
|
||||||
"time": datetime.fromtimestamp(content[3]/1000).strftime("%H:%M"),
|
"time": datetime.fromtimestamp(content[3]/1000).strftime("%H:%M"),
|
||||||
"media": False,
|
"media": False,
|
||||||
"key_id": content[13]
|
"key_id": content[13],
|
||||||
|
"meta": False,
|
||||||
|
"data": None
|
||||||
}
|
}
|
||||||
if "-" in content[0] and content[2] == 0:
|
if "-" in content[0] and content[2] == 0:
|
||||||
name = None
|
name = None
|
||||||
@@ -154,8 +156,9 @@ def messages(db, data):
|
|||||||
try:
|
try:
|
||||||
int(content[4])
|
int(content[4])
|
||||||
except ValueError:
|
except ValueError:
|
||||||
msg = "{The group name changed to "f"{content[4]}"" }"
|
msg = f"The group name changed to {content[4]}"
|
||||||
data[content[0]]["messages"][content[1]]["data"] = msg
|
data[content[0]]["messages"][content[1]]["data"] = msg
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
del data[content[0]]["messages"][content[1]]
|
del data[content[0]]["messages"][content[1]]
|
||||||
else:
|
else:
|
||||||
@@ -174,15 +177,16 @@ def messages(db, data):
|
|||||||
name_left = data[content[8]]["name"]
|
name_left = data[content[8]]["name"]
|
||||||
else:
|
else:
|
||||||
name_left = content[8].split('@')[0]
|
name_left = content[8].split('@')[0]
|
||||||
msg = "{"f"{name_left}"f" added {name_right or 'You'}""}"
|
msg = f"{name_left} added {name_right or 'You'}"
|
||||||
else:
|
else:
|
||||||
msg = "{"f"Added {name_right or 'You'}""}"
|
msg = f"Added {name_right or 'You'}"
|
||||||
elif b"\xac\xed\x00\x05\x74\x00" in thumb_image:
|
elif b"\xac\xed\x00\x05\x74\x00" in thumb_image:
|
||||||
# Changed number
|
# Changed number
|
||||||
original = content[8].split('@')[0]
|
original = content[8].split('@')[0]
|
||||||
changed = thumb_image[7:].decode().split('@')[0]
|
changed = thumb_image[7:].decode().split('@')[0]
|
||||||
msg = "{"f"{original} changed to {changed}""}"
|
msg = f"{original} changed to {changed}"
|
||||||
data[content[0]]["messages"][content[1]]["data"] = msg
|
data[content[0]]["messages"][content[1]]["data"] = msg
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
if content[4] is None:
|
if content[4] is None:
|
||||||
del data[content[0]]["messages"][content[1]]
|
del data[content[0]]["messages"][content[1]]
|
||||||
@@ -194,10 +198,12 @@ def messages(db, data):
|
|||||||
else:
|
else:
|
||||||
if content[2] == 1:
|
if content[2] == 1:
|
||||||
if content[5] == 5 and content[6] == 7:
|
if content[5] == 5 and content[6] == 7:
|
||||||
msg = "{Message deleted}"
|
msg = "Message deleted"
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
if content[9] == "5":
|
if content[9] == "5":
|
||||||
msg = "{ Location shared: "f"{content[10], content[11]}"" }"
|
msg = f"Location shared: {content[10], content[11]}"
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
msg = content[4]
|
msg = content[4]
|
||||||
if msg is not None:
|
if msg is not None:
|
||||||
@@ -207,10 +213,12 @@ def messages(db, data):
|
|||||||
msg = msg.replace("\n", "<br>")
|
msg = msg.replace("\n", "<br>")
|
||||||
else:
|
else:
|
||||||
if content[5] == 0 and content[6] == 7:
|
if content[5] == 0 and content[6] == 7:
|
||||||
msg = "{Message deleted}"
|
msg = "Message deleted"
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
if content[9] == "5":
|
if content[9] == "5":
|
||||||
msg = "{ Location shared: "f"{content[10], content[11]}"" }"
|
msg = f"Location shared: {content[10], content[11]}"
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
msg = content[4]
|
msg = content[4]
|
||||||
if msg is not None:
|
if msg is not None:
|
||||||
@@ -271,8 +279,9 @@ def media(db, data, media_folder):
|
|||||||
# data[content[0]]["messages"][content[1]]["media"] = True
|
# data[content[0]]["messages"][content[1]]["media"] = True
|
||||||
# data[content[0]]["messages"][content[1]]["mime"] = "media"
|
# data[content[0]]["messages"][content[1]]["mime"] = "media"
|
||||||
# else:
|
# else:
|
||||||
data[content[0]]["messages"][content[1]]["data"] = "{The media is missing}"
|
data[content[0]]["messages"][content[1]]["data"] = "The media is missing"
|
||||||
data[content[0]]["messages"][content[1]]["mime"] = "media"
|
data[content[0]]["messages"][content[1]]["mime"] = "media"
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
i += 1
|
i += 1
|
||||||
if i % 100 == 0:
|
if i % 100 == 0:
|
||||||
print(f"Gathering media...({i}/{total_row_number})", end="\r")
|
print(f"Gathering media...({i}/{total_row_number})", end="\r")
|
||||||
@@ -304,9 +313,10 @@ def vcard(db, data):
|
|||||||
with open(file_path, "w", encoding="utf-8") as f:
|
with open(file_path, "w", encoding="utf-8") as f:
|
||||||
f.write(row[2])
|
f.write(row[2])
|
||||||
data[row[1]]["messages"][row[0]]["data"] = row[3] + \
|
data[row[1]]["messages"][row[0]]["data"] = row[3] + \
|
||||||
"{ The vCard file cannot be displayed here, however it " \
|
"The vCard file cannot be displayed here, " \
|
||||||
"should be located at " + file_path + "}"
|
f"however it should be located at {file_path}"
|
||||||
data[row[1]]["messages"][row[0]]["mime"] = "text/x-vcard"
|
data[row[1]]["messages"][row[0]]["mime"] = "text/x-vcard"
|
||||||
|
data[row[1]]["messages"][row[0]]["meta"] = True
|
||||||
print(f"Gathering vCards...({index + 1}/{total_row_number})", end="\r")
|
print(f"Gathering vCards...({index + 1}/{total_row_number})", end="\r")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,9 @@ def messages(db, data):
|
|||||||
"time": datetime.fromtimestamp(ts).strftime("%H:%M"),
|
"time": datetime.fromtimestamp(ts).strftime("%H:%M"),
|
||||||
"media": False,
|
"media": False,
|
||||||
"reply": None,
|
"reply": None,
|
||||||
"caption": None
|
"caption": None,
|
||||||
|
"meta": False,
|
||||||
|
"data": None
|
||||||
}
|
}
|
||||||
if "-" in content[0] and content[2] == 0:
|
if "-" in content[0] and content[2] == 0:
|
||||||
name = None
|
name = None
|
||||||
@@ -94,8 +96,9 @@ def messages(db, data):
|
|||||||
try:
|
try:
|
||||||
int(content[4])
|
int(content[4])
|
||||||
except ValueError:
|
except ValueError:
|
||||||
msg = "{The group name changed to "f"{content[4]}"" }"
|
msg = f"The group name changed to {content[4]}"
|
||||||
data[content[0]]["messages"][content[1]]["data"] = msg
|
data[content[0]]["messages"][content[1]]["data"] = msg
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
del data[content[0]]["messages"][content[1]]
|
del data[content[0]]["messages"][content[1]]
|
||||||
else:
|
else:
|
||||||
@@ -106,7 +109,8 @@ def messages(db, data):
|
|||||||
# real message
|
# real message
|
||||||
if content[2] == 1:
|
if content[2] == 1:
|
||||||
if content[5] == 14:
|
if content[5] == 14:
|
||||||
msg = "{Message deleted}"
|
msg = "Message deleted"
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
msg = content[4]
|
msg = content[4]
|
||||||
if msg is not None:
|
if msg is not None:
|
||||||
@@ -116,7 +120,8 @@ def messages(db, data):
|
|||||||
msg = msg.replace("\n", "<br>")
|
msg = msg.replace("\n", "<br>")
|
||||||
else:
|
else:
|
||||||
if content[5] == 14:
|
if content[5] == 14:
|
||||||
msg = "{Message deleted}"
|
msg = "Message deleted"
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
else:
|
else:
|
||||||
msg = content[4]
|
msg = content[4]
|
||||||
if msg is not None:
|
if msg is not None:
|
||||||
@@ -133,7 +138,7 @@ def messages(db, data):
|
|||||||
f"Gathering messages...({total_row_number}/{total_row_number})", end="\r")
|
f"Gathering messages...({total_row_number}/{total_row_number})", end="\r")
|
||||||
|
|
||||||
|
|
||||||
def media(db, data):
|
def media(db, data, media_folder):
|
||||||
c = db.cursor()
|
c = db.cursor()
|
||||||
# Get media
|
# Get media
|
||||||
c.execute("""SELECT count() FROM ZWAMEDIAITEM""")
|
c.execute("""SELECT count() FROM ZWAMEDIAITEM""")
|
||||||
@@ -155,7 +160,7 @@ def media(db, data):
|
|||||||
content = c.fetchone()
|
content = c.fetchone()
|
||||||
mime = MimeTypes()
|
mime = MimeTypes()
|
||||||
while content is not None:
|
while content is not None:
|
||||||
file_path = f"Message/{content[2]}"
|
file_path = f"{media_folder}/{content[2]}"
|
||||||
data[content[0]]["messages"][content[1]]["media"] = True
|
data[content[0]]["messages"][content[1]]["media"] = True
|
||||||
|
|
||||||
if os.path.isfile(file_path):
|
if os.path.isfile(file_path):
|
||||||
@@ -178,8 +183,9 @@ def media(db, data):
|
|||||||
# data[content[0]]["messages"][content[1]]["data"] = "{The media is missing}"
|
# data[content[0]]["messages"][content[1]]["data"] = "{The media is missing}"
|
||||||
# data[content[0]]["messages"][content[1]]["mime"] = "media"
|
# data[content[0]]["messages"][content[1]]["mime"] = "media"
|
||||||
# else:
|
# else:
|
||||||
data[content[0]]["messages"][content[1]]["data"] = "{The media is missing}"
|
data[content[0]]["messages"][content[1]]["data"] = "The media is missing"
|
||||||
data[content[0]]["messages"][content[1]]["mime"] = "media"
|
data[content[0]]["messages"][content[1]]["mime"] = "media"
|
||||||
|
data[content[0]]["messages"][content[1]]["meta"] = True
|
||||||
if content[6] is not None:
|
if content[6] is not None:
|
||||||
data[content[0]]["messages"][content[1]]["caption"] = content[6]
|
data[content[0]]["messages"][content[1]]["caption"] = content[6]
|
||||||
i += 1
|
i += 1
|
||||||
@@ -216,10 +222,11 @@ def vcard(db, data):
|
|||||||
with open(file_path, "w", encoding="utf-8") as f:
|
with open(file_path, "w", encoding="utf-8") as f:
|
||||||
f.write(row[4])
|
f.write(row[4])
|
||||||
data[row[2]]["messages"][row[1]]["data"] = row[3] + \
|
data[row[2]]["messages"][row[1]]["data"] = row[3] + \
|
||||||
"{ The vCard file cannot be displayed here, however it " \
|
"The vCard file cannot be displayed here, " \
|
||||||
"should be located at " + file_path + "}"
|
f"however it should be located at {file_path}"
|
||||||
data[row[2]]["messages"][row[1]]["mime"] = "text/x-vcard"
|
data[row[2]]["messages"][row[1]]["mime"] = "text/x-vcard"
|
||||||
data[row[2]]["messages"][row[1]]["media"] = True
|
data[row[2]]["messages"][row[1]]["media"] = True
|
||||||
|
data[row[2]]["messages"][row[1]]["meta"] = True
|
||||||
print(f"Gathering vCards...({index + 1}/{total_row_number})", end="\r")
|
print(f"Gathering vCards...({index + 1}/{total_row_number})", end="\r")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -72,8 +72,13 @@
|
|||||||
<a href="#{{msg.reply}}" style="color: #168acc;">"{{ msg.quoted_data or 'media' }}"</a>
|
<a href="#{{msg.reply}}" style="color: #168acc;">"{{ msg.quoted_data or 'media' }}"</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if msg.meta == true or msg.media == false and msg.data is none %}
|
||||||
|
<div style="text-align: center;" class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar">
|
||||||
|
<p>{{ msg.data or 'This message is not supported' }}</p>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
{% if msg.media == false %}
|
{% if msg.media == false %}
|
||||||
{{ msg.data or "{This message is not supported yet}" | sanitize_except() }}
|
{{ msg.data | sanitize_except() }}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if "image/" in msg.mime %}
|
{% if "image/" in msg.mime %}
|
||||||
<a href="{{ msg.data }}"><img src="{{ msg.data }}" /></a>
|
<a href="{{ msg.data }}"><img src="{{ msg.data }}" /></a>
|
||||||
@@ -86,7 +91,9 @@
|
|||||||
<source src="{{ msg.data }}" />
|
<source src="{{ msg.data }}" />
|
||||||
</video>
|
</video>
|
||||||
{% elif "/" in msg.mime %}
|
{% elif "/" in msg.mime %}
|
||||||
{The file cannot be displayed here, however it should be located at {{ msg.data }}}
|
<div style="text-align: center;" class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar">
|
||||||
|
<p>The file cannot be displayed here, however it should be located at {{ msg.data }}</p>
|
||||||
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% filter escape %}{{ msg.data }}{% endfilter %}
|
{% filter escape %}{{ msg.data }}{% endfilter %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -95,6 +102,7 @@
|
|||||||
{{ msg.caption }}
|
{{ msg.caption }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="w3-col m2 l2" style="padding-left: 10px"><img src="{{ my_avatar }}" onerror="this.style.display='none'"></div>
|
<div class="w3-col m2 l2" style="padding-left: 10px"><img src="{{ my_avatar }}" onerror="this.style.display='none'"></div>
|
||||||
@@ -120,8 +128,13 @@
|
|||||||
<a href="#{{msg.reply}}" style="color: #168acc;">"{{ msg.quoted_data or 'media' }}"</a>
|
<a href="#{{msg.reply}}" style="color: #168acc;">"{{ msg.quoted_data or 'media' }}"</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if msg.meta == true or msg.media == false and msg.data is none %}
|
||||||
|
<div style="text-align: center;" class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar">
|
||||||
|
<p>{{ msg.data or 'This message is not supported' }}</p>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
{% if msg.media == false %}
|
{% if msg.media == false %}
|
||||||
{{ msg.data or "{This message is not supported yet}" | sanitize_except() }}
|
{{ msg.data | sanitize_except() }}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if "image/" in msg.mime %}
|
{% if "image/" in msg.mime %}
|
||||||
<a href="{{ msg.data }}"><img src="{{ msg.data }}" /></a>
|
<a href="{{ msg.data }}"><img src="{{ msg.data }}" /></a>
|
||||||
@@ -134,7 +147,9 @@
|
|||||||
<source src="{{ msg.data }}" />
|
<source src="{{ msg.data }}" />
|
||||||
</video>
|
</video>
|
||||||
{% elif "/" in msg.mime %}
|
{% elif "/" in msg.mime %}
|
||||||
{The file cannot be displayed here, however it should be located at {{ msg.data }}}
|
<div style="text-align: center;" class="w3-panel w3-border-blue w3-pale-blue w3-rightbar w3-leftbar">
|
||||||
|
<p>The file cannot be displayed here, however it should be located at {{ msg.data }}</p>
|
||||||
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% filter escape %}{{ msg.data }}{% endfilter %}
|
{% filter escape %}{{ msg.data }}{% endfilter %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -143,6 +158,7 @@
|
|||||||
{{ msg.caption }}
|
{{ msg.caption }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user