当前位置:   article > 正文

python自动化--飞书群发送日报图片_python飞书群发送日报图片

python飞书群发送日报图片

1、实现功能

工作中需要在群里发送常规统计的数据,利用pandas清洗、透视数据与飞书接口实现发送日报图片,实现自动化,解放自己。飞书文档的说明可自行查询。
1、飞书群发送图片的逻辑

  1. 获取飞书机器人的token
  2. 上传图片,获取image_key
  3. 在飞书群里创建webhook,post发送图片

2、敲代码

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

调用飞书文档需要使用使用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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

上传图片获取到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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

这里的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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

做了个定时周一-周五的11点定时发送。

3、小结

使用webhook发送数据要注意安全,可以添加白名单、ip等,后续会继续完善。结合pandas与sql大大提高数据统计过程。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/385780
推荐阅读
相关标签
  

闽ICP备14008679号