-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathmain.py
123 lines (95 loc) · 3.21 KB
/
main.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
114
115
116
117
118
119
120
121
122
123
import requests
from flask import Flask, request, jsonify, send_file
import itchat
import itchat.content
import itchat.config
import farpush
import socket
import json
import _thread
import os
import datetime
app = Flask(__name__)
# store messages
messages = []
@app.route("/send", methods=['POST'])
def received():
data = request.json
username = data['username']
nametype = data['type']
content = data['content']
if nametype == '0':
send4nick(username, content)
else:
send(username, content)
return 'ok'
@app.route("/getuser", methods=['POST'])
def getuser():
data = request.json
username = data['username']
friends = itchat.search_friends(name=username)
if friends:
author = friends[0]
user = {'nickName': author.nickName, 'remarkName': author.remarkName, 'headImage': author.get_head_image_url()}
return json.dumps(user)
@app.route("/getuserphoto", methods=['POST'])
def getuserphoto():
data = request.json
username = data['username']
friends = itchat.search_friends(name=username)
if friends:
author = friends[0]
return itchat.get_head_img(author.userName)
return "fail"
# 调用定义的方法
@app.route("/getmessagelist", methods=['GET'])
def getmessage():
message = {"messages": messages}
return json.dumps(message)
@app.route("/getfile", methods=['POST'])
def getfile():
filename = request.json['filename']
return send_file(filename)
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
message = {}
print((msg.user.remarkName or msg.user.nickName) + " 说 : " + msg.text)
message['name'] = (msg.user.remarkName or msg.user.nickName)
message['content'] = msg.text
message['time'] = int(datetime.datetime.now().timestamp())
messages.append(message)
farpush.mespush((msg.user.remarkName or msg.user.nickName), msg.text)
@itchat.msg_register(itchat.content.MEDIA_TYPE_MSG)
def text_media(msg):
if msg.type in itchat.content.MESSAGE_TEXT:
msgtext = itchat.content.MESSAGE_TEXT[msg.type]
else:
msgtext = '未定义类型'
print((msg.user.remarkName or msg.user.nickName) + " 发送了 : " + msgtext)
farpush.mespush((msg.user.remarkName or msg.user.nickName), msgtext)
@itchat.msg_register([itchat.content.RECORDING, itchat.content.PICTURE])
def mes_media(msg):
if not os.path.exists("files"):
os.mkdir("files")
msg.download(msg.fileName)
farpush.mdpush((msg.user.remarkName or msg.user.nickName), itchat.content.MESSAGE_TEXT[msg.type], msg.fileName)
# for group
@itchat.msg_register(itchat.content.TEXT, isGroupChat=True)
def text_reply(msg):
farpush.mespush(msg.user.nickName, msg.text)
def send(username, content):
itchat.send(content, toUserName=username)
def send4nick(nickname, content):
friends = itchat.search_friends(name=nickname)
if friends:
author = friends[0]
author.send(content)
def flask(ip, port):
from waitress import serve
serve(app, host=ip, port=port)
if __name__ == '__main__':
# app.run(host='0.0.0.0', port=9091)
_thread.start_new_thread(flask, ('0.0.0.0', 9091))
itchat.check_login()
itchat.auto_login(hotReload=True, enableCmdQR=2)
itchat.run()