diff --git a/pywxdump/db/__init__.py b/pywxdump/db/__init__.py index 560d49b..e20180a 100644 --- a/pywxdump/db/__init__.py +++ b/pywxdump/db/__init__.py @@ -44,11 +44,11 @@ class DBHandler(MicroHandler, MediaHandler, OpenIMContactHandler, PublicMsgHandl users.update(self.get_im_user_list(word=word, wxids=wxids)) return users - def get_msgs(self, wxid="", start_index=0, page_size=500, msg_type: str = "", msg_sub_type: str = "", - start_createtime=None, end_createtime=None): + def get_msgs(self, wxids: list or str = "", start_index=0, page_size=500, msg_type: str = "", + msg_sub_type: str = "", start_createtime=None, end_createtime=None): """ 获取聊天记录列表 - :param wxid: wxid + :param wxids:[ wxid] :param start_index: 起始索引 :param page_size: 页大小 :param msg_type: 消息类型 @@ -59,11 +59,11 @@ class DBHandler(MicroHandler, MediaHandler, OpenIMContactHandler, PublicMsgHandl "talker": talker, "room_name": StrTalker, "msg": msg, "src": src, "extra": {}, "CreateTime": CreateTime, } """ - msgs0, wxid_list0 = self.get_msg_list(wxid=wxid, start_index=start_index, page_size=page_size, + msgs0, wxid_list0 = self.get_msg_list(wxids=wxids, start_index=start_index, page_size=page_size, msg_type=msg_type, msg_sub_type=msg_sub_type, start_createtime=start_createtime, end_createtime=end_createtime, my_talker=self.my_wxid) - msgs1, wxid_list1 = self.get_plc_msg_list(wxid=wxid, start_index=start_index, page_size=page_size, + msgs1, wxid_list1 = self.get_plc_msg_list(wxids=wxids, start_index=start_index, page_size=page_size, msg_type=msg_type, msg_sub_type=msg_sub_type, start_createtime=start_createtime, end_createtime=end_createtime, my_talker=self.my_wxid) diff --git a/pywxdump/db/dbMSG.py b/pywxdump/db/dbMSG.py index 400b2c8..ed2f075 100644 --- a/pywxdump/db/dbMSG.py +++ b/pywxdump/db/dbMSG.py @@ -62,11 +62,11 @@ class MsgHandler(DatabaseBase): return msg_count @db_error - def get_msg_list(self, wxid="", start_index=0, page_size=500, msg_type: str = "", msg_sub_type: str = "", - start_createtime=None, end_createtime=None, my_talker="我"): + def get_msg_list(self, wxids: list or str = "", start_index=0, page_size=500, msg_type: str = "", + msg_sub_type: str = "", start_createtime=None, end_createtime=None, my_talker="我"): """ 获取聊天记录列表 - :param wxid: wxid + :param wxids: [wxid] :param start_index: 起始索引 :param page_size: 页大小 :param msg_type: 消息类型 @@ -81,8 +81,11 @@ class MsgHandler(DatabaseBase): if not self.tables_exist("MSG"): return [], [] + if isinstance(wxids, str) and wxids: + wxids = [wxids] param = () - sql_wxid, param = ("AND StrTalker=? ", param + (wxid,)) if wxid else ("", param) + sql_wxid, param = (f"AND StrTalker in ({', '.join('?' for _ in wxids)}) ", + param + tuple(wxids)) if wxids else ("", param) sql_type, param = ("AND Type=? ", param + (msg_type,)) if msg_type else ("", param) sql_sub_type, param = ("AND SubType=? ", param + (msg_sub_type,)) if msg_type and msg_sub_type else ("", param) sql_start_createtime, param = ("AND CreateTime>=? ", param + (start_createtime,)) if start_createtime else ( diff --git a/pywxdump/db/dbPublicMsg.py b/pywxdump/db/dbPublicMsg.py index 4b75cb6..b5a454b 100644 --- a/pywxdump/db/dbPublicMsg.py +++ b/pywxdump/db/dbPublicMsg.py @@ -59,11 +59,11 @@ class PublicMsgHandler(MsgHandler): return msg_count @db_error - def get_plc_msg_list(self, wxid="", start_index=0, page_size=500, msg_type: str = "", msg_sub_type: str = "", - start_createtime=None, end_createtime=None, my_talker="我"): + def get_plc_msg_list(self, wxids: list or str = "", start_index=0, page_size=500, msg_type: str = "", + msg_sub_type: str = "", start_createtime=None, end_createtime=None, my_talker="我"): """ 获取聊天记录列表 - :param wxid: wxid + :param wxids: [wxid] :param start_index: 起始索引 :param page_size: 页大小 :param msg_type: 消息类型 @@ -77,8 +77,11 @@ class PublicMsgHandler(MsgHandler): if not self.tables_exist("PublicMsg"): return [], [] + if isinstance(wxids, str) and wxids: + wxids = [wxids] param = () - sql_wxid, param = ("AND StrTalker=? ", param + (wxid,)) if wxid else ("", param) + sql_wxid, param = (f"AND StrTalker in ({', '.join('?' for _ in wxids)}) ", + param + tuple(wxids)) if wxids else ("", param) sql_type, param = ("AND Type=? ", param + (msg_type,)) if msg_type else ("", param) sql_sub_type, param = ("AND SubType=? ", param + (msg_sub_type,)) if msg_type and msg_sub_type else ("", param) sql_start_createtime, param = ("AND CreateTime>=? ", param + (start_createtime,)) if start_createtime else (