76 lines
3.0 KiB
Python
76 lines
3.0 KiB
Python
# -*- coding: utf-8 -*-#
|
|
# -------------------------------------------------------------------------------
|
|
# Name: parsingMicroMsg.py
|
|
# Description:
|
|
# Author: xaoyaoo
|
|
# Date: 2024/04/15
|
|
# -------------------------------------------------------------------------------
|
|
from .dbbase import DatabaseBase
|
|
|
|
|
|
class ParsingMicroMsg(DatabaseBase):
|
|
def __init__(self, db_path):
|
|
super().__init__(db_path)
|
|
|
|
def wxid2userinfo(self, wx_id):
|
|
"""
|
|
获取单个联系人信息
|
|
:param wx_id: 微信id
|
|
:return: 联系人信息
|
|
"""
|
|
# 获取username是wx_id的用户
|
|
sql = ("SELECT A.UserName, A.NickName, A.Remark,A.Alias,A.Reserved6,B.bigHeadImgUrl "
|
|
"FROM Contact A,ContactHeadImgUrl B "
|
|
f"WHERE A.UserName = '{wx_id}' AND A.UserName = B.usrName "
|
|
"ORDER BY NickName ASC;")
|
|
result = self.execute_sql(sql)
|
|
if not result:
|
|
return None
|
|
result = result[0]
|
|
return {"wxid": result[0], "nickname": result[1], "remark": result[2], "account": result[3],
|
|
"describe": result[4], "headImgUrl": result[5]}
|
|
|
|
def user_list(self):
|
|
"""
|
|
获取联系人列表
|
|
:param MicroMsg_db_path: MicroMsg.db 文件路径
|
|
:return: 联系人列表
|
|
"""
|
|
users = []
|
|
sql = ("SELECT A.UserName, A.NickName, A.Remark,A.Alias,A.Reserved6,B.bigHeadImgUrl "
|
|
"FROM Contact A,ContactHeadImgUrl B "
|
|
"where UserName==usrName "
|
|
"ORDER BY NickName ASC;")
|
|
|
|
result = self.execute_sql(sql)
|
|
for row in result:
|
|
# 获取用户名、昵称、备注和聊天记录数量
|
|
username, nickname, remark, Alias, describe, headImgUrl = row
|
|
users.append(
|
|
{"wxid": username, "nickname": nickname, "remark": remark, "account": Alias,
|
|
"describe": describe, "headImgUrl": headImgUrl})
|
|
return users
|
|
|
|
def chatroom_list(self):
|
|
"""
|
|
获取群聊列表
|
|
:param MicroMsg_db_path: MicroMsg.db 文件路径
|
|
:return: 群聊列表
|
|
"""
|
|
rooms = []
|
|
# 连接 MicroMsg.db 数据库,并执行查询
|
|
sql = ("SELECT A.ChatRoomName,A.UserNameList, A.DisplayNameList, B.Announcement,B.AnnouncementEditor "
|
|
"FROM ChatRoom A,ChatRoomInfo B "
|
|
"where A.ChatRoomName==B.ChatRoomName "
|
|
"ORDER BY A.ChatRoomName ASC;")
|
|
result = self.execute_sql(sql)
|
|
for row in result:
|
|
# 获取用户名、昵称、备注和聊天记录数量
|
|
ChatRoomName, UserNameList, DisplayNameList, Announcement, AnnouncementEditor = row
|
|
UserNameList = UserNameList.split("^G")
|
|
DisplayNameList = DisplayNameList.split("^G")
|
|
rooms.append(
|
|
{"ChatRoomName": ChatRoomName, "UserNameList": UserNameList, "DisplayNameList": DisplayNameList,
|
|
"Announcement": Announcement, "AnnouncementEditor": AnnouncementEditor})
|
|
return rooms
|