From 996582a81e59eba9abee530ab65d8a8ec9a4de99 Mon Sep 17 00:00:00 2001 From: shuaikangzhou <863909694@qq.com> Date: Sat, 9 Dec 2023 23:23:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E6=83=85=E5=8C=85=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/DataBase/merge.py | 6 +++--- app/decrypt/get_wx_info.py | 2 +- app/person_pc.py | 1 + app/util/emoji.py | 36 ++++++++++++++++++++++-------------- readme.md | 15 +++++++-------- 5 files changed, 34 insertions(+), 26 deletions(-) diff --git a/app/DataBase/merge.py b/app/DataBase/merge.py index 8500072..27ea06b 100644 --- a/app/DataBase/merge.py +++ b/app/DataBase/merge.py @@ -16,7 +16,7 @@ def merge_databases(source_paths, target_path): db.text_factory = str cursor = db.cursor() sql = ''' - SELECT TalkerId,MsgsvrID,Type,SubType,IsSender,CreateTime,Sequence,StrTalker,StrContent,DisplayContent,BytesExtra + SELECT TalkerId,MsgsvrID,Type,SubType,IsSender,CreateTime,Sequence,StrTalker,StrContent,DisplayContent,BytesExtra,CompressContent FROM MSG; ''' cursor.execute(sql) @@ -25,8 +25,8 @@ def merge_databases(source_paths, target_path): target_cursor.executemany( "INSERT INTO MSG " "(TalkerId,MsgsvrID,Type,SubType,IsSender,CreateTime,Sequence,StrTalker,StrContent,DisplayContent," - "BytesExtra)" - "VALUES(?,?,?,?,?,?,?,?,?,?,?)", + "BytesExtra,CompressContent)" + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?)", result) cursor.close() db.close() diff --git a/app/decrypt/get_wx_info.py b/app/decrypt/get_wx_info.py index 1c506e8..208743f 100644 --- a/app/decrypt/get_wx_info.py +++ b/app/decrypt/get_wx_info.py @@ -256,7 +256,7 @@ def read_info(version_list, is_logging=False): tmp_rd['wxid'] = get_info_wxid(Handle) tmp_rd['filePath'] = get_info_filePath(tmp_rd['wxid']) if tmp_rd['wxid'] != "None" else "None" - tmp_rd['key'] = get_key(tmp_rd['filePath'], addrLen) if tmp_rd['filePath'] != "None" else "None" + tmp_rd['key'] = get_key(tmp_rd['filePath'], addrLen) result.append(tmp_rd) if is_logging: diff --git a/app/person_pc.py b/app/person_pc.py index 606e29b..12d847d 100644 --- a/app/person_pc.py +++ b/app/person_pc.py @@ -47,6 +47,7 @@ class ContactPC: self.nickName = contact_info.get('NickName') if not self.remark: self.remark = self.nickName + self.remark.replace('*', '_').replace('/', '_').replace('\\', '_') self.smallHeadImgUrl = contact_info.get('smallHeadImgUrl') self.smallHeadImgBLOG = b'' self.avatar = QPixmap() diff --git a/app/util/emoji.py b/app/util/emoji.py index eeec30e..e3d7a57 100644 --- a/app/util/emoji.py +++ b/app/util/emoji.py @@ -9,17 +9,20 @@ emoji.py """ import os +import traceback import xml.etree.ElementTree as ET import requests +from app.log import log, logger + root_path = './data/emoji/' if not os.path.exists('./data'): os.mkdir('./data') if not os.path.exists(root_path): os.mkdir(root_path) - +@log def get_image_format(header): # 定义图片格式的 magic numbers image_formats = { @@ -36,7 +39,7 @@ def get_image_format(header): # 如果无法识别格式,返回 None return None - +@log def parser_xml(xml_string): # Parse the XML string root = ET.fromstring(xml_string) @@ -60,7 +63,7 @@ def parser_xml(xml_string): 'md5': md5 if md5 else androidmd5, } - +@log def download(url, output_dir, name, thumb=False): if not url: return ':/icons/icons/404.png' @@ -80,17 +83,22 @@ def download(url, output_dir, name, thumb=False): def get_emoji(xml_string, thumb=True, output_path=root_path) -> str: - emoji_info = parser_xml(xml_string) - md5 = emoji_info['md5'] - image_format = ['.png', '.gif', '.jpeg'] - for f in image_format: - prefix = 'th_' if thumb else '' - file_path = os.path.join(output_path, prefix + md5 + f) - if os.path.exists(file_path): - return file_path - url = emoji_info['thumburl'] if thumb else emoji_info['cdnurl'] - print("下载表情包ing:", url) - return download(url, output_path, md5, thumb) + try: + emoji_info = parser_xml(xml_string) + md5 = emoji_info['md5'] + image_format = ['.png', '.gif', '.jpeg'] + for f in image_format: + prefix = 'th_' if thumb else '' + file_path = os.path.join(output_path, prefix + md5 + f) + if os.path.exists(file_path): + return file_path + url = emoji_info['thumburl'] if thumb else emoji_info['cdnurl'] + print("下载表情包ing:", url) + emoji_path = download(url, output_path, md5, thumb) + return emoji_path + except: + logger.error(traceback.format_exc()) + return "" if __name__ == '__main__': diff --git a/readme.md b/readme.md index fea4210..5380288 100644 --- a/readme.md +++ b/readme.md @@ -40,21 +40,20 @@ - 还原微信聊天界面 - 🗨文本✅ - 🏝图片✅ - - 🐻‍❄️表情包✅ + - 🐻‍❄️表情包✅ + - 拍一拍等系统消息✅ - 导出聊天记录 - sqlite数据库✅ - - HTML(文本、图片)✅ + - HTML(文本、图片、视频、表情包)✅ - Word文档✅ - CSV文档✅ -- 分析聊天数据,做成可视化年报(请下载exe程序体验该功能,急需前端大佬提供优质模板) +- 分析聊天数据,做成可视化年报(急需前端大佬提供优质模板) - 🔥**项目持续更新中** - 导出全部表情包❎ - 合并多个备份数据❎ - 语音❎ - - 视频❎ - 文件❎ - - 回复❎ - - 拍一拍❎ + - 小伙伴们想要其他功能可以留言哦📬 - 有任何问题可以随时联系我(863909694@qq.com) @@ -115,8 +114,8 @@ pip install -r requirements_pc.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 手机端使用聊天记录迁移功能将聊天数据迁移到电脑上 操作步骤: -- 安卓: 我->设置->聊天->聊天记录迁移与备份->迁移-> 迁移到电脑微信(迁移完成后重启微信)[否则](https://github.com/LC044/WeChatMsg/issues/27) -- iOS: 我->设置->通用->聊天记录迁移与备份->迁移-> 迁移到电脑微信(迁移完成后重启微信)[否则](https://github.com/LC044/WeChatMsg/issues/27) +- 安卓: 手机微信->我->设置->聊天->聊天记录迁移与备份->迁移-> 迁移到电脑微信(迁移完成后重启微信)[否则](https://github.com/LC044/WeChatMsg/issues/27) +- iOS: 手机微信->我->设置->通用->聊天记录迁移与备份->迁移-> 迁移到电脑微信(迁移完成后重启微信)[否则](https://github.com/LC044/WeChatMsg/issues/27) 2. 运行程序