{"contents":"# -*- coding: utf-8 -*-#\n# -------------------------------------------------------------------------------\n# Name: __init__.py\n# Description: db\n# Author: xaoyaoo\n# Date: 2024/04/15\n# -------------------------------------------------------------------------------\nfrom .utils import download_file, dat2img\n\nfrom .db_favorite import FavoriteHandler\nfrom .db_msg import MsgHandler\nfrom .db_micro import MicroHandler\nfrom .db_media import MediaHandler\nfrom .db_open_im_contact import OpenIMContactHandler\nfrom .db_public_msg import PublicMsgHandler\nfrom .db_open_im_media import OpenIMMediaHandler\nfrom .db_sns import SnsHandler\n\n\nclass DBHandler(MicroHandler, MediaHandler, OpenIMContactHandler, PublicMsgHandler, OpenIMMediaHandler,\n FavoriteHandler, SnsHandler):\n _class_name = \"DBHandler\"\n\n def __init__(self, db_config, my_wxid, *args, **kwargs):\n self.config = db_config\n self.my_wxid = my_wxid\n\n super().__init__(self.config)\n # 加速查询索引\n self.Micro_add_index()\n self.Msg_add_index()\n self.PublicMsg_add_index()\n self.Media_add_index()\n\n def get_user(self, word=None, wxids=None, labels=None):\n \"\"\"\n 获取联系人列表\n :param word: 搜索关键字\n :param wxids: wxid列表\n :param labels: 标签列表\n :return: 联系人dict {wxid: {}}\n \"\"\"\n users = self.get_user_list(word=word, wxids=wxids, label_ids=labels)\n users.update(self.get_im_user_list(word=word, wxids=wxids))\n return users\n\n def get_msgs(self, wxids: list or str = \"\", start_index=0, page_size=500, msg_type: str = \"\",\n msg_sub_type: str = \"\", start_createtime=None, end_createtime=None):\n \"\"\"\n 获取聊天记录列表\n :param wxids:[ wxid]\n :param start_index: 起始索引\n :param page_size: 页大小\n :param msg_type: 消息类型\n :param msg_sub_type: 消息子类型\n :param start_createtime: 开始时间\n :param end_createtime: 结束时间\n :return: 聊天记录列表 {\"id\": _id, \"MsgSvrID\": str(MsgSvrID), \"type_name\": type_name, \"is_sender\": IsSender,\n \"talker\": talker, \"room_name\": StrTalker, \"msg\": msg, \"src\": src, \"extra\": {},\n \"CreateTime\": CreateTime, }\n \"\"\"\n msgs0, wxid_list0 = self.get_msg_list(wxids=wxids, start_index=start_index, page_size=page_size,\n msg_type=msg_type,\n msg_sub_type=msg_sub_type, start_createtime=start_createtime,\n end_createtime=end_createtime, my_talker=self.my_wxid)\n msgs1, wxid_list1 = self.get_plc_msg_list(wxids=wxids, start_index=start_index, page_size=page_size,\n msg_type=msg_type,\n msg_sub_type=msg_sub_type, start_createtime=start_createtime,\n end_createtime=end_createtime, my_talker=self.my_wxid)\n msgs = msgs0 + msgs1\n wxid_list = wxid_list0 + wxid_list1\n\n users = self.get_user(wxids=wxid_list)\n return msgs, users\n\n def get_msgs_count(self, wxids: list = \"\"):\n chat_count = self.get_m_msg_count(wxids)\n chat_count1 = self.get_plc_msg_count(wxids)\n # 合并两个字典,相同key,则将value相加\n count = {k: chat_count.get(k, 0) + chat_count1.get(k, 0) for k in\n list(set(list(chat_count.keys()) + list(chat_count1.keys())))}\n return count\n\n\n__all__ = [\"DBHandler\", \"FavoriteHandler\", \"MsgHandler\", \"MicroHandler\", \"MediaHandler\",\n \"OpenIMContactHandler\", \"PublicMsgHandler\", \"OpenIMMediaHandler\", \"SnsHandler\"]\n","is_binary":false,"path":"wxdump_linux/db/__init__.py","ref":""}