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中的格式化输出用法总结
Jul 28 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
Python多线程原理与用法详解
Aug 20 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
Python中文编码知识点
Feb 18 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
Django发送邮件功能实例详解
Sep 02 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
python执行js代码的方法
May 13 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
如何做到多笔资料的同步
2006/10/09 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
laravel请求参数校验方法
2019/10/10 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
Three.js基础部分学习
2017/01/08 Javascript
详解vue-router基本使用
2017/04/18 Javascript
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
Python生成器以及应用实例解析
2018/02/08 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
详解python的四种内置数据结构
2019/03/19 Python
如何通过python实现全排列
2020/02/11 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
写给老师的表扬信
2014/01/21 职场文书
学习标兵获奖感言
2014/02/20 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
街道社区活动报告
2015/02/05 职场文书
学校计划生育责任书
2015/05/09 职场文书
《山中访友》教学反思
2016/02/24 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android