From 62ffe4080e6b0ea0605125c322b0f1c81ca3e3eb Mon Sep 17 00:00:00 2001 From: xaoyaoo Date: Fri, 15 Mar 2024 09:38:20 +0800 Subject: [PATCH] =?UTF-8?q?fix=20AND=20MicroMsg=E5=AE=9E=E6=97=B6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=20#82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- pywxdump/__init__.py | 2 +- pywxdump/analyzer/db_parsing.py | 7 +++++-- pywxdump/api/api.py | 7 ++++++- pywxdump/wx_info/merge_db.py | 3 +++ pywxdump/wx_info/tools/realTime.exe | Bin 2165760 -> 2166272 bytes 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 562ad38..5b05485 100644 --- a/README.md +++ b/README.md @@ -89,8 +89,8 @@ qq交流群:[276392799](https://s.xaoyo.top/gOLUDl) or [276392799](https://s.x * 常见问题请参考[FAQ](https://github.com/xaoyaoo/PyWxDump/tree/master/doc/FAQ.md),更新日志请参考[CHANGELOG](https://github.com/xaoyaoo/PyWxDump/tree/master/doc/CHANGELOG.md) * Web UI的仓库位置 [wxdump_web](https://github.com/xaoyaoo/wxdump_web) * 如果对wxdump实现原理感兴趣,请关注公众号:`逍遥之芯`,回复:`原理` 获取原理解析。 - * [:sparkling\_heart: Support Me](https://github.com/xaoyaoo/xaoyaoo/blob/main/donate.md) +* 私有化定制开发请关注公众号:`逍遥之芯`,回复:`私有化定制` 。 ## 5. Star History diff --git a/pywxdump/__init__.py b/pywxdump/__init__.py index e1033d1..50849de 100644 --- a/pywxdump/__init__.py +++ b/pywxdump/__init__.py @@ -25,4 +25,4 @@ except: PYWXDUMP_ROOT_PATH = os.path.dirname(__file__) -__version__ = "2.4.56" +__version__ = "2.4.57" diff --git a/pywxdump/analyzer/db_parsing.py b/pywxdump/analyzer/db_parsing.py index 53facb4..9631965 100644 --- a/pywxdump/analyzer/db_parsing.py +++ b/pywxdump/analyzer/db_parsing.py @@ -206,8 +206,11 @@ def read_audio(MsgSvrID, is_play=False, is_wave=False, DB_PATH: str = "", rate=2 if len(DBdata) == 0: return False data = DBdata[0][0] # [1:] + b'\xFF\xFF' - pcm_data = read_audio_buf(data, is_play, is_wave, rate) - return pcm_data + try: + pcm_data = read_audio_buf(data, is_play, is_wave, rate) + return pcm_data + except Exception as e: + return False def wordcloud_generator(text, out_path="", is_show=False, img_path="", font="C:\Windows\Fonts\simhei.ttf"): diff --git a/pywxdump/api/api.py b/pywxdump/api/api.py index 4b513e1..671f4b4 100644 --- a/pywxdump/api/api.py +++ b/pywxdump/api/api.py @@ -309,6 +309,7 @@ def get_real_time_msg(): """ save_msg_path = read_session(g.sf, "msg_path") save_media_path = read_session(g.sf, "media_path") + save_micro_path = read_session(g.sf, "micro_path") wx_path = read_session(g.sf, "wx_path") key = read_session(g.sf, "key") @@ -316,15 +317,19 @@ def get_real_time_msg(): return ReJson(1002, body="msg_path or media_path or wx_path or key is required") media_paths = get_core_db(wx_path, ["MediaMSG"]) msg_paths = get_core_db(wx_path, ["MSG"]) + micro_paths = get_core_db(wx_path, ["MicroMsg"]) - if not media_paths[0] or not msg_paths[0]: + if not media_paths[0] or not msg_paths[0] or not micro_paths[0]: return ReJson(1001, body="media_paths or msg_paths is required") media_paths = media_paths[1] media_paths.sort() msg_paths = msg_paths[1] msg_paths.sort() + micro_paths = micro_paths[1] + micro_paths.sort() merge_real_time_db(key=key, db_path=media_paths[-1], merge_path=save_media_path) merge_real_time_db(key=key, db_path=msg_paths[-1], merge_path=save_msg_path) + merge_real_time_db(key=key, db_path=micro_paths[-1], merge_path=save_micro_path) return ReJson(0, "success") diff --git a/pywxdump/wx_info/merge_db.py b/pywxdump/wx_info/merge_db.py index 7a547fa..3a2d340 100644 --- a/pywxdump/wx_info/merge_db.py +++ b/pywxdump/wx_info/merge_db.py @@ -356,6 +356,9 @@ def merge_real_time_db(key, db_path: str, merge_path: str, CreateTime: int = 0, if not os.path.exists(db_path): raise FileNotFoundError("数据库不存在") + if "MSG" not in db_path and "MicroMsg" not in db_path and "MediaMSG" not in db_path: + raise FileNotFoundError("数据库不是消息数据库") # MicroMsg实时数据库 + out_path = "tmp_" + ''.join( random.choices('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', k=6)) + ".db" merge_path_base = os.path.dirname(merge_path) # 合并后的数据库路径 diff --git a/pywxdump/wx_info/tools/realTime.exe b/pywxdump/wx_info/tools/realTime.exe index d384058839c1d65eb17642307f785dd450204995..499b2561ad0957e4acf5df6d46e72f03c2ae018a 100644 GIT binary patch delta 7985 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 delta 7673 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 c%F8OtYRYV7^<`v}dXu