效果:
聊天效果
大学习
@之后输入要P图的学号姓名 生成最新一期截图
例:@机器人QQ清年big学习 123456顾某 (审核真难)
QQ发送图片
```python
import requests
# go_cqhttp地址和端口
url = "http://127.0.0.1:5700"
# 发送图片API
def send_image(image_url, user_id=None, group_id=None):
api_url = url + "/send_msg"
data = {
"message": "[CQ:image,file=" + image_url + "]",
"auto_escape": False
}
if user_id:
data["user_id"] = user_id
elif group_id:
data["group_id"] = group_id
res = requests.post(api_url, json=data).json()
return res
# 发送图片给某个QQ号
send_image("http://example.com/image.jpg", user_id=123456)
完整代码
import socket
import json,re,os
import requests
from PIL import Image, ImageDraw, ImageFont
urk='https://xiaoapi.cn/API/lt_xiaoai.php?type=json&msg='
ListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ListenSocket.bind(('127.0.0.1', 5701))
ListenSocket.listen(100)
HttpResponseHeader = '''HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n\r\n
'''
def qingnian(pk):
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.1.1171 SLBChan/103"
}
des = os.path.join(os.path.expanduser("~"), "Desktop/") #
ps = pk
url = 'http://news.cyol.com/gb/channels/vrGlAKDl/index.html'
gu = requests.get(url, headers=head)
obj = re.compile(r"<li><a\shref=.(?P<name>.*?).\sclass", re.S)
ml = obj.findall(gu.text)[0] # 最新一期的视频网址
gum = requests.get(ml)
gum.encoding = 'UTF-8'
oba = re.compile(r"<title>(.*?)</title>", re.S)
resa = oba.findall(gum.text)[0]
kl = ml.split('/')[5]
sl = 'https://h5.cyol.com/special/daxuexi/' + kl + '/images/end.jpg' # 图片网址
pto = requests.get(sl)
with open(des + resa + '.jpg', 'wb') as f:
f.write(pto.content)
print(resa + '下载完毕') # 原图
gum.close()
pto.close()
gu.close()
path = des + resa + '.jpg'
image = Image.open(path)
draw = ImageDraw.Draw(image)
font = ImageFont.truetype('../model_data/simhei.ttf', 50)
draw.text((190, 100), ps, fill=(255, 0, 0), font=font)
paths = dek + resa + '.jpg'
image.save(paths)
return resa + '.jpg'
url = "http://127.0.0.1:5700"
# 发送图片API
def send_image(image_url, user_id=None, group_id=None):
api_url = url + "/send_msg"
data = {
"message": "[CQ:image,file=" + image_url + "]",
"auto_escape": False
}
if user_id:
data["user_id"] = user_id
elif group_id:
data["group_id"] = group_id
res = requests.post(api_url, json=data).json()
return res
def send_msg(resp_dict):
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = '127.0.0.1'
client.connect((ip, 5700))
msg_type = resp_dict['msg_type'] # 回复类型(群聊/私聊)
number = resp_dict['number'] # 回复账号(群号/好友号)
msg = resp_dict['msg'] # 要回复的消息
# 将字符中的特殊字符进行url编码
msg = msg.replace(" ", "%20")
msg = msg.replace("\n", "%0a")
if msg_type == 'group':
payload = "GET /send_group_msg?group_id=" + str(number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n"
elif msg_type == 'private':
payload = "GET /send_private_msg?user_id=" + str(number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n"
# print("发送" + payload)
client.send(payload.encode("utf-8"))
client.close()
return 0
def request_to_json(msg):
for i in range(len(msg)):
if msg[i]=="{" and msg[-1]=="\n":
return json.loads(msg[i:])
return None
#需要循环执行,返回值为json格式
def rev_msg():# json or None
global js
Client, Address = ListenSocket.accept()
Request = Client.recv(1024).decode(encoding='utf-8')
rev_json=request_to_json(Request)
Client.sendall((HttpResponseHeader).encode(encoding='utf-8'))
Client.close()
return rev_json
while(True):
rev=rev_msg()
print(rev)
if rev["post_type"] == "message":
#print(rev) #需要功能自己DIY
if rev["message_type"] == "private": #私聊
if rev['raw_message']=='在吗':
qq = rev['sender']['user_id']
send_msg({'msg_type':'private','number':qq,'msg':'我在'})
elif rev["message_type"] == "group": #群聊
group = rev['group_id']
if "[CQ:at,qq=2201523460]" in rev["raw_message"]:
s =rev['raw_message'].split(' ')[1]
if '青年大学习'in s:
try :
k = rev['raw_message'].split(' ')[2]
pk=k
except:
pk=' '
send_image(qingnian(pk), group_id = rev['group_id'])
else:
url=urk+s
gu = requests.get(url)
gus=gu.json().get('data').get('txt')
qq=rev['sender']['user_id']
send_msg({'msg_type':'group','number':group,'msg':gus.format(qq)})
gu.close()
# [CQ: poke, qq = {}] 窗口抖动
else:
continue
else: # rev["post_type"]=="meta_event":
continue