重构导出json
This commit is contained in:
parent
cc337391bc
commit
7c405f35aa
@ -23,7 +23,7 @@ from pywxdump import read_info, VERSION_LIST, batch_decrypt, BiasAddr, merge_db,
|
|||||||
import pywxdump
|
import pywxdump
|
||||||
from pywxdump.dbpreprocess import wxid2userinfo, ParsingMSG, get_user_list, get_recent_user_list, ParsingMediaMSG, \
|
from pywxdump.dbpreprocess import wxid2userinfo, ParsingMSG, get_user_list, get_recent_user_list, ParsingMediaMSG, \
|
||||||
download_file
|
download_file
|
||||||
from pywxdump.dbpreprocess import export_csv
|
from pywxdump.dbpreprocess import export_csv,export_json
|
||||||
|
|
||||||
# app = Flask(__name__, static_folder='../ui/web/dist', static_url_path='/')
|
# app = Flask(__name__, static_folder='../ui/web/dist', static_url_path='/')
|
||||||
|
|
||||||
@ -513,14 +513,44 @@ def get_export_csv():
|
|||||||
if not my_wxid: return ReJson(1001, body="my_wxid is required")
|
if not my_wxid: return ReJson(1001, body="my_wxid is required")
|
||||||
|
|
||||||
wxid = request.json.get("wxid")
|
wxid = request.json.get("wxid")
|
||||||
|
# st_ed_time = request.json.get("datetime", [0, 0])
|
||||||
if not wxid:
|
if not wxid:
|
||||||
return ReJson(1002, body=f"username is required: {wxid}")
|
return ReJson(1002, body=f"username is required: {wxid}")
|
||||||
|
# if not isinstance(st_ed_time, list) or len(st_ed_time) != 2:
|
||||||
|
# return ReJson(1002, body=f"datetime is required: {st_ed_time}")
|
||||||
|
# start, end = st_ed_time
|
||||||
|
# if not isinstance(start, int) or not isinstance(end, int) or start >= end:
|
||||||
|
# return ReJson(1002, body=f"datetime is required: {st_ed_time}")
|
||||||
|
|
||||||
outpath = os.path.join(g.tmp_path, "export", my_wxid, "csv", wxid)
|
outpath = os.path.join(g.tmp_path, "export", my_wxid, "csv", wxid)
|
||||||
if not os.path.exists(outpath):
|
if not os.path.exists(outpath):
|
||||||
os.makedirs(outpath)
|
os.makedirs(outpath)
|
||||||
|
|
||||||
code, ret = export_csv(wxid, outpath, read_session(g.sf, my_wxid, "msg_path"))
|
code, ret = export_csv(wxid, outpath, read_session(g.sf, my_wxid, "merge_path"))
|
||||||
|
if code:
|
||||||
|
return ReJson(0, ret)
|
||||||
|
else:
|
||||||
|
return ReJson(2001, body=ret)
|
||||||
|
|
||||||
|
|
||||||
|
@api.route('/api/export_json', methods=["GET", 'POST'])
|
||||||
|
def get_export_json():
|
||||||
|
"""
|
||||||
|
导出json
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
my_wxid = read_session(g.sf, "test", "last")
|
||||||
|
if not my_wxid: return ReJson(1001, body="my_wxid is required")
|
||||||
|
|
||||||
|
wxid = request.json.get("wxid")
|
||||||
|
if not wxid:
|
||||||
|
return ReJson(1002, body=f"username is required: {wxid}")
|
||||||
|
|
||||||
|
outpath = os.path.join(g.tmp_path, "export", my_wxid, "json", wxid)
|
||||||
|
if not os.path.exists(outpath):
|
||||||
|
os.makedirs(outpath)
|
||||||
|
|
||||||
|
code, ret = export_json(wxid, outpath, read_session(g.sf, my_wxid, "merge_path"))
|
||||||
if code:
|
if code:
|
||||||
return ReJson(0, ret)
|
return ReJson(0, ret)
|
||||||
else:
|
else:
|
||||||
|
@ -14,6 +14,7 @@ from .parsingOpenIMContact import ParsingOpenIMContact
|
|||||||
from .utils import download_file
|
from .utils import download_file
|
||||||
|
|
||||||
from .export.exportCSV import export_csv
|
from .export.exportCSV import export_csv
|
||||||
|
from .export.exportJSON import export_json
|
||||||
|
|
||||||
|
|
||||||
def get_user_list(MicroMsg_db_path, OpenIMContact_db_path=None, word=None):
|
def get_user_list(MicroMsg_db_path, OpenIMContact_db_path=None, word=None):
|
||||||
|
39
pywxdump/dbpreprocess/export/exportJSON.py
Normal file
39
pywxdump/dbpreprocess/export/exportJSON.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# -*- coding: utf-8 -*-#
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# Name: exportCSV.py
|
||||||
|
# Description:
|
||||||
|
# Author: xaoyaoo
|
||||||
|
# Date: 2024/04/20
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from ..parsingMSG import ParsingMSG
|
||||||
|
|
||||||
|
|
||||||
|
def export_json(wxid, outpath, msg_path):
|
||||||
|
if not os.path.exists(outpath):
|
||||||
|
outpath = os.path.join(os.getcwd(), "export" + os.sep + wxid)
|
||||||
|
if not os.path.exists(outpath):
|
||||||
|
os.makedirs(outpath)
|
||||||
|
|
||||||
|
pmsg = ParsingMSG(msg_path)
|
||||||
|
|
||||||
|
count = pmsg.msg_count(wxid)
|
||||||
|
chatCount = count.get(wxid, 0)
|
||||||
|
if chatCount == 0:
|
||||||
|
return False, "没有聊天记录"
|
||||||
|
|
||||||
|
page_size = chatCount + 1
|
||||||
|
for i in range(0, chatCount, page_size):
|
||||||
|
start_index = i
|
||||||
|
data, wxid_list = pmsg.msg_list(wxid, start_index, page_size)
|
||||||
|
if len(data) == 0:
|
||||||
|
return False, "没有聊天记录"
|
||||||
|
save_path = os.path.join(outpath, f"{wxid}_{i}_{i + page_size}.json")
|
||||||
|
with open(save_path, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(data, f, ensure_ascii=False, indent=4)
|
||||||
|
return True, f"导出成功: {outpath}"
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
pass
|
Loading…
Reference in New Issue
Block a user