parent
0ff56fe695
commit
da7072b2c3
@ -247,17 +247,23 @@ class ParsingMSG(DatabaseBase):
|
||||
"room_name": StrTalker, "content": content, "CreateTime": CreateTime, "id": id}
|
||||
return row_data
|
||||
|
||||
def msg_list(self, wxid="", start_index=0, page_size=500):
|
||||
def msg_list(self, wxid="", start_index=0, page_size=500, msg_type: str = ""):
|
||||
if wxid:
|
||||
sql = (
|
||||
"SELECT localId, IsSender, StrContent, StrTalker, Sequence, Type, SubType,CreateTime,MsgSvrID,DisplayContent,CompressContent,BytesExtra,ROW_NUMBER() OVER (ORDER BY CreateTime ASC) AS id "
|
||||
"FROM MSG WHERE StrTalker=? "
|
||||
"ORDER BY CreateTime ASC LIMIT ?,?")
|
||||
if msg_type:
|
||||
sql = sql.replace("ORDER BY CreateTime ASC LIMIT ?,?",
|
||||
f"AND Type={msg_type} ORDER BY CreateTime ASC LIMIT ?,?")
|
||||
result1 = self.execute_sql(sql, (wxid, start_index, page_size))
|
||||
else:
|
||||
sql = (
|
||||
"SELECT localId, IsSender, StrContent, StrTalker, Sequence, Type, SubType,CreateTime,MsgSvrID,DisplayContent,CompressContent,BytesExtra,ROW_NUMBER() OVER (ORDER BY CreateTime ASC) AS id "
|
||||
"FROM MSG ORDER BY CreateTime ASC LIMIT ?,?")
|
||||
if msg_type:
|
||||
sql = sql.replace("ORDER BY CreateTime ASC LIMIT ?,?",
|
||||
f"AND Type={msg_type} ORDER BY CreateTime ASC LIMIT ?,?")
|
||||
result1 = self.execute_sql(sql, (start_index, page_size))
|
||||
if not result1:
|
||||
return [], []
|
||||
|
@ -72,7 +72,7 @@ class ParsingMicroMsg(DatabaseBase):
|
||||
def user_list(self, word=None):
|
||||
"""
|
||||
获取联系人列表
|
||||
:param MicroMsg_db_path: MicroMsg.db 文件路径
|
||||
:param word 查询关键字,可以是用户名、昵称、备注、描述,允许拼音
|
||||
:return: 联系人列表
|
||||
"""
|
||||
users = []
|
||||
@ -87,6 +87,8 @@ class ParsingMicroMsg(DatabaseBase):
|
||||
f"OR A.NickName LIKE '%{word}%' "
|
||||
f"OR A.Remark LIKE '%{word}%' "
|
||||
f"OR A.Alias LIKE '%{word}%' "
|
||||
f"OR A.QuanPin LIKE LOWER('%{word}%') "
|
||||
f"OR LOWER(A.PYInitial) LIKE LOWER('%{word}%') "
|
||||
# f"OR A.Reserved6 LIKE '%{word}%' "
|
||||
"ORDER BY A.NickName DESC;")
|
||||
result = self.execute_sql(sql)
|
||||
|
@ -299,7 +299,7 @@ def merge_db(db_paths, save_path="merge.db", CreateTime: int = 0, endCreateTime:
|
||||
return save_path
|
||||
|
||||
|
||||
def decrypt_merge(wx_path, key, outpath="", CreateTime: int = 0, endCreateTime: int = 0) -> (bool, str):
|
||||
def decrypt_merge(wx_path, key, outpath="", CreateTime: int = 0, endCreateTime: int = 0, db_type: list[str] = []) -> (bool, str):
|
||||
"""
|
||||
解密合并数据库 msg.db, microMsg.db, media.db,注意:会删除原数据库
|
||||
:param wx_path: 微信路径 eg: C:\*******\WeChat Files\wxid_*********
|
||||
@ -319,7 +319,13 @@ def decrypt_merge(wx_path, key, outpath="", CreateTime: int = 0, endCreateTime:
|
||||
# 分割wx_path的文件名和父目录
|
||||
msg_dir = os.path.dirname(wx_path)
|
||||
my_wxid = os.path.basename(wx_path)
|
||||
db_type = ["MSG", "MediaMSG", "MicroMsg", "OpenIMContact", "OpenIMMedia", "OpenIMMsg", "Favorite"]
|
||||
db_type_set: set[str] = {"MSG", "MediaMSG", "MicroMsg", "OpenIMContact", "OpenIMMedia", "OpenIMMsg", "Favorite"}
|
||||
if len(db_type) == 0:
|
||||
db_type = list(db_type_set)
|
||||
else:
|
||||
for i in db_type:
|
||||
if i not in db_type_set:
|
||||
return False, f"db_type参数错误, 可用选项 {db_type_set}"
|
||||
# 解密
|
||||
code, wxdbpaths = get_core_db(wx_path, db_type)
|
||||
if not code:
|
||||
|
Loading…
Reference in New Issue
Block a user