PyWxDump/pywxdump/db/__init__.py
2024-08-13 22:59:46 +08:00

85 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-#
# -------------------------------------------------------------------------------
# Name: __init__.py.py
# Description:
# Author: xaoyaoo
# Date: 2024/04/15
# -------------------------------------------------------------------------------
# import pandas as pd
from .utils import download_file, dat2img
from .dbFavorite import FavoriteHandler
from .dbMSG import MsgHandler
from .dbMicro import MicroHandler
from .dbMedia import MediaHandler
from .dbOpenIMContact import OpenIMContactHandler
from .dbPublicMsg import PublicMsgHandler
from .dbOpenIMMedia import OpenIMMediaHandler
from .dbSns import SnsHandler
class DBHandler(MicroHandler, MediaHandler, OpenIMContactHandler, PublicMsgHandler, OpenIMMediaHandler,
FavoriteHandler, SnsHandler):
_class_name = "DBHandler"
def __init__(self, db_config, my_wxid, *args, **kwargs):
self.config = db_config
self.my_wxid = my_wxid
super().__init__(self.config)
# 加速查询索引
self.Micro_add_index()
self.Msg_add_index()
self.PublicMsg_add_index()
self.Media_add_index()
def get_user(self, word=None, wxids=None, labels=None):
"""
获取联系人列表
:param word: 搜索关键字
:param wxids: wxid列表
:param labels: 标签列表
:return: 联系人dict {wxid: {}}
"""
users = self.get_user_list(word=word, wxids=wxids, label_ids=labels)
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):
"""
获取聊天记录列表
:param wxid: wxid
:param start_index: 起始索引
:param page_size: 页大小
:param msg_type: 消息类型
:param msg_sub_type: 消息子类型
:param start_createtime: 开始时间
:param end_createtime: 结束时间
:return: 聊天记录列表 {"id": _id, "MsgSvrID": str(MsgSvrID), "type_name": type_name, "is_sender": IsSender,
"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,
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,
msg_type=msg_type,
msg_sub_type=msg_sub_type, start_createtime=start_createtime,
end_createtime=end_createtime, my_talker=self.my_wxid)
msgs = msgs0 + msgs1
wxid_list = wxid_list0 + wxid_list1
users = self.get_user(wxids=wxid_list)
return msgs, users
def get_msgs_count(self, wxids: list = ""):
chat_count = self.get_m_msg_count(wxids)
chat_count1 = self.get_plc_msg_count(wxids)
# 合并两个字典相同key则将value相加
count = {k: chat_count.get(k, 0) + chat_count1.get(k, 0) for k in
list(set(list(chat_count.keys()) + list(chat_count1.keys())))}
return count