forked from D-Asce/PerfectedWechatPCAPI
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPerfectedWechatPCAPI.py
113 lines (89 loc) · 3.74 KB
/
PerfectedWechatPCAPI.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# -*- coding: utf-8 -*-#
# Author:Jiawei Feng
# @software: PyCharm
# @file: PerfectedWechatPCAPI.py
# @time: 2020/11/3 17:08
from WechatPCAPI import WechatPCAPI
import logging
from queue import Queue
from time import sleep
class Friend:
def __init__(self, wxid, wechat_number, nickname, remarkname):
self.wxid = wxid
self.wechat_number = wechat_number
self.nickname = nickname
self.remarkname = remarkname
class Member:
def __init__(self, wxid, wechat_number, name):
self.wxid = wxid
self.wechat_number = wechat_number
self.name = name
class Chatroom:
members = []
def __init__(self, wxid, name):
self.wxid = wxid
self.name = name
class PerfectedWechatPCAPI(WechatPCAPI):
logging.basicConfig(level=logging.DEBUG)
message_queue = Queue()
friends = []
chatrooms = []
def __init__(self):
super(PerfectedWechatPCAPI, self).__init__(on_message=self.on_message, log=logging)
super().start_wechat(block=False)
while not super().get_myself():
sleep(5)
print("登陆成功")
self.update_info()
def update_info(self):
def collect_info(self):
def get_friends_and_chatrooms():
super().update_frinds()
def get_chatroom_members(self):
for chatroom in self.chatrooms:
super().get_member_of_chatroom(chatroom.wxid)
get_friends_and_chatrooms()
sleep(1)
get_chatroom_members(self)
self.friends = []
self.chatrooms = []
collect_info(self)
def on_message(self, message):
def info_manager(self, message):
def info_chatroom_member(self, message):
data = message.get("data")
chatroom_wxid = data.get("chatroom_id")
member_wxid = data.get("wx_id")
member_name = data.get("wx_nickname").encode("gbk", "replace").decode("gbk", "replace")
member_wechat_number = data.get("wx_id_search")
new_member = Member(member_wxid, member_wechat_number, member_name)
for chatroom in self.chatrooms:
if chatroom.wxid == chatroom_wxid:
chatroom.members.append(new_member)
break
def info_friend(self, message):
data = message.get("data")
friend_nickname = data.get("wx_nickname").encode("gbk", "replace").decode("gbk", "replace")
friend_wxid = data.get("wx_id")
friend_wechat_number = data.get("wx_id_search")
new_friend = Friend(friend_wxid, friend_wechat_number, friend_nickname, '')
self.friends.append(new_friend)
def info_chatroom(self, message):
data = message.get("data")
chatroom_name = data.get("chatroom_name").encode("gbk", "replace").decode("gbk", "replace")
chatroom_wxid = data.get("chatroom_id")
new_chatroom = Chatroom(chatroom_wxid, chatroom_name)
self.chatrooms.append(new_chatroom)
msg_type = message.get("type")
msgType_fun = {"member::chatroom": info_chatroom_member, "friend::person": info_friend,
"friend::chatroom": info_chatroom}
msgType_fun.get(msg_type, self.message_queue.put)(self, message)
logging.debug(message)
info_manager(self, message)
def main():
wx_inst = PerfectedWechatPCAPI()
while True:
message = wx_inst.message_queue.get()
print(message)
if __name__ == '__main__':
main()