python向企业微信发送文字和图片消息的示例


Posted in Python onSeptember 28, 2020

吐槽一下企业微信的api文档真的不好读······

企业微信本来是有功能,可以直接把图片显示到正文的,但是那个api我调用一直出错,各种折腾也没解决。后来感觉就算了,没必要,用url拼接在文字中也行,这样的好处就是以后可以换图床,不局限在企业微信内部(好像免费版一天之内可以上传200张图片,所以如果需求比较大的话可以采用第三方图床)

我把上传部分封装了一个使用新线程的方法,以防使用的时候因为上传卡住主线程(亲测如果不这样的话确实会卡住)

import requests
import json
from threading import Thread
import cv2
import os


class Wechat_Info():
  def __init__(self):
    self.partyID = ''
    self.corpID = ''
    self.secret = ''
    self.agentID = ''
    self.token = None
    self.pic = None

  def __get_token(self, corpid, secret):
    Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
    Data = {
      "corpid": corpid,
      "corpsecret": secret
    }
    r = requests.get(url=Url, params=Data)
    token = r.json()['access_token']
    return token

  def send_message(self, message):
    url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}".format(
      self.__get_token(self.corpID, self.secret))
    data = {
      "toparty": self.partyID,
      "msgtype": "text",
      "agentid": self.agentID,
      "text": {
        "content": message
      },
      "safe": "0"
    }
    result = requests.post(url=url, data=json.dumps(data))
    return result.text

  def get_media_url(self, path): ##上传到图片素材 图片url
    Gtoken = self.__get_token(self.corpID, self.secret)
    img_url = "https://qyapi.weixin.qq.com/cgi-bin/media/uploadimg?access_token={}".format(Gtoken)
    files = {'media': open(path, 'rb')}
    r = requests.post(img_url, files=files)
    re = json.loads(r.text)
    # print("media_id: " + re['media_id'])
    return re['url']

  def send_pic(self, pic_path):
    img_url = self.get_media_url(pic_path)
    url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}".format(
      self.__get_token(self.corpID, self.secret))
    data = {
      "toparty": self.partyID,
      "msgtype": "text",
      "agentid": self.agentID,
      "text": {
        "content": img_url
      },
      "safe": "0"
    }
    result = requests.post(url=url, data=json.dumps(data))
    return result.text

  def send_violence_warning(self, pic_path):
    img_url = self.get_media_url(pic_path)
    url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}".format(
      self.__get_token(self.corpID, self.secret))
    data = {
      "toparty": self.partyID,
      "msgtype": "text",
      "agentid": self.agentID,
      "text": {
        "content": '【管理员注意】,有校园暴力行为发生,请及时处理!监控图片>>' + img_url
      },
      "safe": "0"
    }
    result = requests.post(url=url, data=json.dumps(data))
    return result.text

  def send_violence_warning_read_path_from_class(self):
    pic_path = 'temp.jpg'
    cv2.imwrite(pic_path, self.pic)
    self.send_violence_warning(pic_path)
    os.remove(pic_path)

  def send_violence_warning_in_new_thread(self, pic):
    self.pic = pic
    thread = Thread(target=self.send_violence_warning_read_path_from_class)
    thread.start()



if __name__ == '__main__':
  wechat_info = Wechat_Info()
  # result = wechat_info.send_message('微信测试_2020')
  # result = wechat_info.send_pic('C:\\Users\\JiaDing\\Desktop\\pic.jpg')
  result = wechat_info.send_violence_warning('C:\\Users\\JiaDing\\Desktop\\pic.jpg')
  print(result)

在主线程里面调用那个send_violence_warning_in_new_thread,把opencv的图片传进来就行

效果:

python向企业微信发送文字和图片消息的示例

虽然是url,但是效果其实也挺好的,点一下就能显示了,即使是第三方图床也没有提示什么的,操作速度也很快,没有其他幺蛾子

以上就是python向企业微信发送文字和图片消息的示例的详细内容,更多关于python发送文字和图片的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python logging类库使用例子
Nov 22 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
Python pickle模块实现对象序列化
Nov 22 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
Keras搭建自编码器操作
Jul 03 Python
python从PDF中提取数据的示例
Oct 30 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 Python
Python集合的基础操作
Nov 01 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 Python
python利用tkinter实现图片格式转换的示例
Sep 28 #Python
python在CMD界面读取excel所有数据的示例
Sep 28 #Python
python调用摄像头的示例代码
Sep 28 #Python
python 调用API接口 获取和解析 Json数据
Sep 28 #Python
记录一下scrapy中settings的一些配置小结
Sep 28 #Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 #Python
详解scrapy内置中间件的顺序
Sep 28 #Python
You might like
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
使用Python实现windows下的抓包与解析
2018/01/15 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
python程序 创建多线程过程详解
2019/09/23 Python
python是否适合网页编程详解
2019/10/04 Python
Python中Selenium模块的使用详解
2020/10/09 Python
flask框架中的cookie和session使用
2021/01/31 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
美容师的职业规划书
2013/12/27 职场文书
母亲节感恩寄语
2014/02/21 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
2014年业务工作总结
2014/11/17 职场文书
放射科岗位职责
2015/02/14 职场文书
超市主管竞聘书
2015/09/15 职场文书
志愿者工作心得体会
2016/01/15 职场文书
学习心理学心得体会
2016/01/22 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
MySQL 分组查询的优化方法
2021/05/12 MySQL
MySQL系列之六 用户与授权
2021/07/02 MySQL