【python】使用python封装企业微信群机器人api
https://github.com/Dark-Athena/qyweixinrobot_py
#!/usr/bin/env python
#coding=utf-8
#功能 :封装企业微信群机器人API
#日期 :2021-09-05
#作者:Dark-Athena
#说明:
"""
支持纯文本、markdown、图片、文件、图文
a = wx.WxRobot('1111-222-333-444-55555') #webhook
a.sendMessage('文本内容')
a.sendMarkdown('markdown内容')
a.sendImage('d:/图片.jpg') #图片文件的绝对路径
a.sendMedia('d:/文件.jpg') #文件的绝对路径
a.sendNews('[{
"title" : "中秋节礼品领取",
"description" : "今年中秋节公司有豪礼相送",
"url" : "www.qq.com",
"picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
}]')
"""
import requests
import json
import hashlib
import base64
import os
class WxRobot():
headers = {"Content-Type": "application/json"}
req_message = {"errcode": 1,"errmessage": "请求微信企业失败,请检查网络"}
def __init__(self, webhook):
self.post_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={0}".format(webhook)
def _req(self,data):
try:
return requests.post(self.post_url, data=json.dumps(data), headers=self.headers,timeout=10).json()
except Exception as e:
return self.req_message
def sendMessage(self, message):
data = {"msgtype": "text","text": {"content": str(message)}}
return self._req(data)
def sendMarkdown(self, message):
data = {"msgtype": "markdown","markdown": {"content": str(message)}}
return self._req(data)
def sendNews(self, message):
data = {"msgtype": "news","news": {"articles": list(message)}}
print (data)
return self._req(data)
def sendImage(self, image_path):
if os.path.exists(image_path):
with open(image_path, "br") as f:
fcont = f.read()
ls_f = base64.b64encode(fcont)
fmd5 = hashlib.md5(fcont)
data = {"msgtype": "image", "image": {"base64": ls_f.decode('utf8'), "md5": fmd5.hexdigest()}}
return self._req(data)
else:
self.req_message['errmessage']='图片文件不存在'
return self.req_message
def sendMedia(self, file_path):
if os.path.exists(file_path):
upload_url = self.post_url.replace('send', 'upload_media') + '&type=file'
try:
media_id = requests.post(upload_url, files=[('media', open(file_path, 'rb'))]).json()['media_id']
print (media_id)
except Exception as e:
self.req_message['errmessage']='上传文件失败,请检查网络'
return self.req_message
data = {"msgtype": "file","file": {"media_id": media_id}}
return self._req(data)
else:
self.req_message['errmessage']='文件不存在'
return self.req_message
posted on 2021-10-03 20:16 DarkAthena 阅读(355) 评论(0) 编辑 收藏 举报