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