mirror of
https://github.com/LC044/WeChatMsg
synced 2025-02-22 19:02:17 +08:00
修复了已退群的人昵称无法找到导致的闪退问题
This commit is contained in:
parent
3568c5d6b3
commit
3a7049d08f
@ -549,6 +549,7 @@ class ChildThread(QThread):
|
|||||||
if not os.path.exists(chatroom_avatar_path):
|
if not os.path.exists(chatroom_avatar_path):
|
||||||
message[12].avatar.save(chatroom_avatar_path)
|
message[12].avatar.save(chatroom_avatar_path)
|
||||||
except:
|
except:
|
||||||
|
print(message)
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
self.contact.avatar.save(os.path.join(f"{origin_docx_path}/avatar/{self.contact.wxid}.png"))
|
self.contact.avatar.save(os.path.join(f"{origin_docx_path}/avatar/{self.contact.wxid}.png"))
|
||||||
|
@ -3,7 +3,7 @@ import threading
|
|||||||
from app.DataBase import msg_db, micro_msg_db, misc_db
|
from app.DataBase import msg_db, micro_msg_db, misc_db
|
||||||
from app.util.protocbuf.msg_pb2 import MessageBytesExtra
|
from app.util.protocbuf.msg_pb2 import MessageBytesExtra
|
||||||
from app.util.protocbuf.roomdata_pb2 import ChatRoomData
|
from app.util.protocbuf.roomdata_pb2 import ChatRoomData
|
||||||
from app.person import ContactPC, MePC
|
from app.person import ContactPC, MePC, ContactDefault
|
||||||
|
|
||||||
lock = threading.Lock()
|
lock = threading.Lock()
|
||||||
|
|
||||||
@ -107,12 +107,11 @@ class PackageMsg:
|
|||||||
a[9]: msgSvrId,
|
a[9]: msgSvrId,
|
||||||
a[10]: BytesExtra,
|
a[10]: BytesExtra,
|
||||||
a[11]: CompressContent,
|
a[11]: CompressContent,
|
||||||
a[12]: msg_sender, (ContactPC类型,这个才是群聊里的信息发送人,不是群聊或者自己是发送者没有这个字段)
|
a[12]: msg_sender, (ContactPC 或 ContactDefault 类型,这个才是群聊里的信息发送人,不是群聊或者自己是发送者没有这个字段)
|
||||||
'''
|
'''
|
||||||
updated_messages = [] # 用于存储修改后的消息列表
|
updated_messages = [] # 用于存储修改后的消息列表
|
||||||
|
|
||||||
messages = msg_db.get_messages(chatroom_wxid)
|
messages = msg_db.get_messages(chatroom_wxid)
|
||||||
|
|
||||||
for row in messages:
|
for row in messages:
|
||||||
message = list(row)
|
message = list(row)
|
||||||
if message[4] == 1: # 自己发送的就没必要解析了
|
if message[4] == 1: # 自己发送的就没必要解析了
|
||||||
@ -120,6 +119,7 @@ class PackageMsg:
|
|||||||
updated_messages.append(message)
|
updated_messages.append(message)
|
||||||
continue
|
continue
|
||||||
if message[10] is None: # BytesExtra是空的跳过
|
if message[10] is None: # BytesExtra是空的跳过
|
||||||
|
message.append(ContactDefault(wxid))
|
||||||
updated_messages.append(message)
|
updated_messages.append(message)
|
||||||
continue
|
continue
|
||||||
msgbytes = MessageBytesExtra()
|
msgbytes = MessageBytesExtra()
|
||||||
@ -130,9 +130,14 @@ class PackageMsg:
|
|||||||
continue
|
continue
|
||||||
wxid = tmp.field2
|
wxid = tmp.field2
|
||||||
if wxid == "": # 系统消息里面 wxid 不存在
|
if wxid == "": # 系统消息里面 wxid 不存在
|
||||||
|
message.append(ContactDefault(wxid))
|
||||||
updated_messages.append(message)
|
updated_messages.append(message)
|
||||||
continue
|
continue
|
||||||
contact_info_list = micro_msg_db.get_contact_by_username(wxid)
|
contact_info_list = micro_msg_db.get_contact_by_username(wxid)
|
||||||
|
if contact_info_list is None: # 群聊中已退群的联系人不会保存在数据库里
|
||||||
|
message.append(ContactDefault(wxid))
|
||||||
|
updated_messages.append(message)
|
||||||
|
continue
|
||||||
contact_info = {
|
contact_info = {
|
||||||
'UserName': contact_info_list[0],
|
'UserName': contact_info_list[0],
|
||||||
'Alias': contact_info_list[1],
|
'Alias': contact_info_list[1],
|
||||||
@ -145,7 +150,7 @@ class PackageMsg:
|
|||||||
contact.smallHeadImgBLOG = misc_db.get_avatar_buffer(contact.wxid)
|
contact.smallHeadImgBLOG = misc_db.get_avatar_buffer(contact.wxid)
|
||||||
contact.set_avatar(contact.smallHeadImgBLOG)
|
contact.set_avatar(contact.smallHeadImgBLOG)
|
||||||
message.append(contact)
|
message.append(contact)
|
||||||
updated_messages.append(tuple(message))
|
updated_messages.append(message)
|
||||||
return updated_messages
|
return updated_messages
|
||||||
|
|
||||||
def get_chatroom_member_list(self, strtalker):
|
def get_chatroom_member_list(self, strtalker):
|
||||||
@ -175,4 +180,4 @@ class PackageMsg:
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
p = PackageMsg()
|
p = PackageMsg()
|
||||||
print(p.get_package_message_by_wxid("44326600419@chatroom"))
|
print(p.get_package_message_by_wxid("48615079469@chatroom"))
|
||||||
|
@ -89,6 +89,40 @@ class ContactPC:
|
|||||||
self.avatar.save(save_path)
|
self.avatar.save(save_path)
|
||||||
print('保存头像', save_path)
|
print('保存头像', save_path)
|
||||||
|
|
||||||
|
class ContactDefault:
|
||||||
|
def __init__(self, wxid=""):
|
||||||
|
self.avatar = QPixmap(Icon.Default_avatar_path)
|
||||||
|
self.avatar_path = ':/icons/icons/default_avatar.svg'
|
||||||
|
self.wxid = wxid
|
||||||
|
self.remark = wxid
|
||||||
|
self.alias = wxid
|
||||||
|
self.nickName = wxid
|
||||||
|
self.smallHeadImgUrl = ""
|
||||||
|
self.smallHeadImgBLOG = b''
|
||||||
|
self.is_chatroom = False
|
||||||
|
|
||||||
|
def set_avatar(self, img_bytes):
|
||||||
|
if not img_bytes:
|
||||||
|
self.avatar.load(Icon.Default_avatar_path)
|
||||||
|
return
|
||||||
|
if img_bytes[:4] == b'\x89PNG':
|
||||||
|
self.avatar.loadFromData(img_bytes, format='PNG')
|
||||||
|
else:
|
||||||
|
self.avatar.loadFromData(img_bytes, format='jfif')
|
||||||
|
self.avatar.scaled(60, 60, Qt.IgnoreAspectRatio, Qt.SmoothTransformation)
|
||||||
|
|
||||||
|
def save_avatar(self, path=None):
|
||||||
|
if not self.avatar:
|
||||||
|
return
|
||||||
|
if path:
|
||||||
|
save_path = path
|
||||||
|
else:
|
||||||
|
os.makedirs('./data/avatar', exist_ok=True)
|
||||||
|
save_path = os.path.join(f'data/avatar/', self.wxid + '.png')
|
||||||
|
self.avatar_path = save_path
|
||||||
|
self.avatar.save(save_path)
|
||||||
|
print('保存头像', save_path)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
p1 = MePC()
|
p1 = MePC()
|
||||||
|
Loading…
Reference in New Issue
Block a user