赞
踩
工作中需要在群里发送常规统计的数据,利用pandas清洗、透视数据与飞书接口实现发送日报图片,实现自动化,解放自己。飞书文档的说明可自行查询。
1、飞书群发送图片的逻辑
import json
import requests
from apscheduler.schedulers.blocking import BlockingScheduler
class FeiShu(object):
def get_token(self):
# 调用机器人的地址 如有更改 可查看飞书文档
url = 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal'
headers = {'content-type': 'application/json; charset=utf-8'}
data = {'app_id': '******',
'app_secret': '******'}
token = requests.post(url, headers=headers, json=data).json()['tenant_access_token']
print(token)
return token
调用飞书文档需要使用使用app_id、app_secret,返回token,从而上传图片。
def upload(self, path, token):
url = 'https://open.feishu.cn/open-apis/im/v1/images'
headers = {'Authorization': 'Bearer {}'.format(token)}
# print(headers)
# path 图片路径
with open(path, 'rb')as f:
image = f.read()
files = {
"image": image
}
data = {
"image_type": "message"
}
img_key = requests.post(url, headers=headers, files=files, data=data).json()['data']['image_key']
return img_key
上传图片获取到img_key。
def push_report(self,img_key, web_hook): header = { "Content-Type": "application/json;charset=UTF-8" } message_body = { "msg_type": "image", "content": {'image_key': img_key} } ChatRob = requests.post(url=web_hook, data=json.dumps(message_body), headers=header) opener = ChatRob.json() if opener["StatusMessage"] == "success": print(u"%s 通知消息发送成功!" % opener) else: print(u"通知消息发送失败,原因:{}".format(opener))
这里的web_hook需要自己在群里自己创建,需要管理员或群主权限。
def run(self, path, webhook):
token = self.get_token()
img_key = self.upload(path=path, token=token)
self.push_report(img_key, web_hook=webhook)
def my_schedule():
schedu = BlockingScheduler()
schedu.add_job(run,'cron',day_of_week='mon-fri',hour='11', minute='00', second='00')
schedu.start()
if __name__ == '__main__':
feishu = FeiShu()
# 需要传入图片path、web_hook 就可以实现调用
# feishu.run()
# feishu.my_schedule()
做了个定时周一-周五的11点定时发送。
使用webhook发送数据要注意安全,可以添加白名单、ip等,后续会继续完善。结合pandas与sql大大提高数据统计过程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。