mirror of
https://github.com/KnugiHK/WhatsApp-Chat-Exporter.git
synced 2026-04-28 08:44:59 +00:00
No longer embed media into HTML
This commit is contained in:
38
extract.py
38
extract.py
@@ -7,9 +7,11 @@ import jinja2
|
|||||||
import os
|
import os
|
||||||
import base64
|
import base64
|
||||||
import requests
|
import requests
|
||||||
|
import shutil
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from mimetypes import MimeTypes
|
from mimetypes import MimeTypes
|
||||||
|
|
||||||
|
|
||||||
def determine_day(last, current):
|
def determine_day(last, current):
|
||||||
last = datetime.fromtimestamp(last).date()
|
last = datetime.fromtimestamp(last).date()
|
||||||
current = datetime.fromtimestamp(current).date()
|
current = datetime.fromtimestamp(current).date()
|
||||||
@@ -70,10 +72,9 @@ content = c.fetchone()
|
|||||||
mime = MimeTypes()
|
mime = MimeTypes()
|
||||||
while content is not None:
|
while content is not None:
|
||||||
file_path = f"WhatsApp/{content[2]}"
|
file_path = f"WhatsApp/{content[2]}"
|
||||||
|
data[content[0]]["messages"][content[1]]["media"] = True
|
||||||
if os.path.isfile(file_path):
|
if os.path.isfile(file_path):
|
||||||
with open(file_path, "rb") as f:
|
data[content[0]]["messages"][content[1]]["data"] = file_path
|
||||||
data[content[0]]["messages"][content[1]]["data"] = base64.b64encode(f.read()).decode("utf-8")
|
|
||||||
data[content[0]]["messages"][content[1]]["media"] = True
|
|
||||||
if content[4] is None:
|
if content[4] is None:
|
||||||
guess = mime.guess_type(file_path)[0]
|
guess = mime.guess_type(file_path)[0]
|
||||||
if guess is not None:
|
if guess is not None:
|
||||||
@@ -83,22 +84,18 @@ while content is not None:
|
|||||||
else:
|
else:
|
||||||
data[content[0]]["messages"][content[1]]["mime"] = content[4]
|
data[content[0]]["messages"][content[1]]["mime"] = content[4]
|
||||||
else:
|
else:
|
||||||
if "https://mmg" in content[4]:
|
# if "https://mmg" in content[4]:
|
||||||
try:
|
# try:
|
||||||
r = requests.get(content[3])
|
# r = requests.get(content[3])
|
||||||
if r.status_code != 200:
|
# if r.status_code != 200:
|
||||||
raise RuntimeError()
|
# raise RuntimeError()
|
||||||
except:
|
# except:
|
||||||
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]]["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:
|
||||||
open('temp.file', 'wb').write(r.content)
|
data[content[0]]["messages"][content[1]]["data"] = "{The media is missing}"
|
||||||
open('temp.asdasda', "a").write(content[3])
|
data[content[0]]["messages"][content[1]]["mime"] = "media"
|
||||||
else:
|
|
||||||
data[content[0]]["messages"][content[1]]["data"] = "{The media is missing}"
|
|
||||||
data[content[0]]["messages"][content[1]]["media"] = True
|
|
||||||
data[content[0]]["messages"][content[1]]["mime"] = "media"
|
|
||||||
i += 1
|
i += 1
|
||||||
if i % 1000 == 0:
|
if i % 1000 == 0:
|
||||||
print(f"Gathering media...({i}/{total_row_number})", end="\r")
|
print(f"Gathering media...({i}/{total_row_number})", end="\r")
|
||||||
@@ -143,6 +140,9 @@ for current, i in enumerate(data):
|
|||||||
|
|
||||||
print(f"Creating HTML...({total_row_number}/{total_row_number})", end="\r")
|
print(f"Creating HTML...({total_row_number}/{total_row_number})", end="\r")
|
||||||
|
|
||||||
|
if not os.path.isdir(f"{output_folder}/WhatsApp"):
|
||||||
|
shutil.move("WhatsApp", f"{output_folder}/")
|
||||||
|
|
||||||
with open("result.json", "w") as f:
|
with open("result.json", "w") as f:
|
||||||
data = json.dumps(data)
|
data = json.dumps(data)
|
||||||
print(f"\nWriting JSON file...({int(len(data)/1024/1024)}MB)")
|
print(f"\nWriting JSON file...({int(len(data)/1024/1024)}MB)")
|
||||||
|
|||||||
@@ -7,9 +7,11 @@ import jinja2
|
|||||||
import os
|
import os
|
||||||
import base64
|
import base64
|
||||||
import requests
|
import requests
|
||||||
|
import shutil
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from mimetypes import MimeTypes
|
from mimetypes import MimeTypes
|
||||||
|
|
||||||
|
|
||||||
def determine_day(last, current):
|
def determine_day(last, current):
|
||||||
last = datetime.fromtimestamp(last).date()
|
last = datetime.fromtimestamp(last).date()
|
||||||
current = datetime.fromtimestamp(current).date()
|
current = datetime.fromtimestamp(current).date()
|
||||||
@@ -69,10 +71,9 @@ 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"Message/{content[2]}"
|
||||||
|
data[content[0]]["messages"][content[1]]["media"] = True
|
||||||
if os.path.isfile(file_path):
|
if os.path.isfile(file_path):
|
||||||
with open(file_path, "rb") as f:
|
data[content[0]]["messages"][content[1]]["data"] = file_path
|
||||||
data[content[0]]["messages"][content[1]]["data"] = base64.b64encode(f.read()).decode("utf-8")
|
|
||||||
data[content[0]]["messages"][content[1]]["media"] = True
|
|
||||||
if content[4] is None:
|
if content[4] is None:
|
||||||
guess = mime.guess_type(file_path)[0]
|
guess = mime.guess_type(file_path)[0]
|
||||||
if guess is not None:
|
if guess is not None:
|
||||||
@@ -82,22 +83,17 @@ while content is not None:
|
|||||||
else:
|
else:
|
||||||
data[content[0]]["messages"][content[1]]["mime"] = content[4]
|
data[content[0]]["messages"][content[1]]["mime"] = content[4]
|
||||||
else:
|
else:
|
||||||
if "https://mmg" in content[4]:
|
# if "https://mmg" in content[4]:
|
||||||
try:
|
# try:
|
||||||
r = requests.get(content[3])
|
# r = requests.get(content[3])
|
||||||
if r.status_code != 200:
|
# if r.status_code != 200:
|
||||||
raise RuntimeError()
|
# raise RuntimeError()
|
||||||
except:
|
# except:
|
||||||
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]]["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}"
|
||||||
open('temp.file', 'wb').write(r.content)
|
data[content[0]]["messages"][content[1]]["mime"] = "media"
|
||||||
open('temp.asdasda', "a").write(content[3])
|
|
||||||
else:
|
|
||||||
data[content[0]]["messages"][content[1]]["data"] = "{The media is missing}"
|
|
||||||
data[content[0]]["messages"][content[1]]["media"] = True
|
|
||||||
data[content[0]]["messages"][content[1]]["mime"] = "media"
|
|
||||||
i += 1
|
i += 1
|
||||||
if i % 1000 == 0:
|
if i % 1000 == 0:
|
||||||
print(f"Gathering media...({i}/{total_row_number})", end="\r")
|
print(f"Gathering media...({i}/{total_row_number})", end="\r")
|
||||||
@@ -142,6 +138,9 @@ for current, i in enumerate(data):
|
|||||||
|
|
||||||
print(f"Creating HTML...({total_row_number}/{total_row_number})", end="\r")
|
print(f"Creating HTML...({total_row_number}/{total_row_number})", end="\r")
|
||||||
|
|
||||||
|
if not os.path.isdir(f"{output_folder}/Message"):
|
||||||
|
shutil.move("Message", f"{output_folder}/")
|
||||||
|
|
||||||
with open("result.json", "w") as f:
|
with open("result.json", "w") as f:
|
||||||
data = json.dumps(data)
|
data = json.dumps(data)
|
||||||
print(f"\nWriting JSON file...({int(len(data)/1024/1024)}MB)")
|
print(f"\nWriting JSON file...({int(len(data)/1024/1024)}MB)")
|
||||||
|
|||||||
@@ -58,14 +58,14 @@
|
|||||||
{% filter escape %}{{ msg.data }}{% endfilter %}
|
{% filter escape %}{{ msg.data }}{% endfilter %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if "image/" in msg.mime %}
|
{% if "image/" in msg.mime %}
|
||||||
<img src="data:{{ msg.mime }};base64, {% filter escape %}{{ msg.data }}{% endfilter %}" />
|
<img src="{{ msg.data }}" />
|
||||||
{% elif "audio/" in msg.mime %}
|
{% elif "audio/" in msg.mime %}
|
||||||
<audio controls="controls" autobuffer="autobuffer">
|
<audio controls="controls" autobuffer="autobuffer">
|
||||||
<source src="data:{{ msg.mime }};base64, {% filter escape %}{{ msg.data }}{% endfilter %}" />
|
<source src="{% filter escape %}{{ msg.data }}{% endfilter %}" />
|
||||||
</audio>
|
</audio>
|
||||||
{% elif "video/" in msg.mime %}
|
{% elif "video/" in msg.mime %}
|
||||||
<video controls="controls" autobuffer="autobuffer">
|
<video controls="controls" autobuffer="autobuffer">
|
||||||
<source src="data:{{ msg.mime }};base64, {% filter escape %}{{ msg.data }}{% endfilter %}" />
|
<source src="{% filter escape %}{{ msg.data }}{% endfilter %}" />
|
||||||
</video>
|
</video>
|
||||||
{% elif "/" in msg.mime %}
|
{% elif "/" in msg.mime %}
|
||||||
{document}
|
{document}
|
||||||
@@ -90,14 +90,14 @@
|
|||||||
{% filter escape %}{{ msg.data }}{% endfilter %}
|
{% filter escape %}{{ msg.data }}{% endfilter %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if "image/" in msg.mime %}
|
{% if "image/" in msg.mime %}
|
||||||
<img src="data:{{ msg.mime }};base64, {% filter escape %}{{ msg.data }}{% endfilter %}" />
|
<img src="{% filter escape %}{{ msg.data }}{% endfilter %}" />
|
||||||
{% elif "audio/" in msg.mime %}
|
{% elif "audio/" in msg.mime %}
|
||||||
<audio controls="controls" autobuffer="autobuffer">
|
<audio controls="controls" autobuffer="autobuffer">
|
||||||
<source src="data:{{ msg.mime }};base64, {% filter escape %}{{ msg.data }}{% endfilter %}" />
|
<source src="{% filter escape %}{{ msg.data }}{% endfilter %}" />
|
||||||
</audio>
|
</audio>
|
||||||
{% elif "video/" in msg.mime %}
|
{% elif "video/" in msg.mime %}
|
||||||
<video controls="controls" autobuffer="autobuffer">
|
<video controls="controls" autobuffer="autobuffer">
|
||||||
<source src="data:{{ msg.mime }};base64, {% filter escape %}{{ msg.data }}{% endfilter %}" />
|
<source src="{% filter escape %}{{ msg.data }}{% endfilter %}" />
|
||||||
</video>
|
</video>
|
||||||
{% elif "/" in msg.mime %}
|
{% elif "/" in msg.mime %}
|
||||||
{document}
|
{document}
|
||||||
|
|||||||
Reference in New Issue
Block a user