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时间戳与时间字符串互相转换实例代码
Nov 28 Python
Python lambda和Python def区别分析
Nov 30 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
Tensorflow之Saver的用法详解
Apr 23 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
python实现nao机器人手臂动作控制
Apr 29 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
利于python脚本编写可视化nmap和masscan的方法
Dec 29 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
PHP源代码数组统计count分析
2011/08/02 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
开办加工厂创业计划书
2014/01/03 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
防暑降温通知书
2015/04/27 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle