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 解析XML文件
Apr 15 Python
python备份文件以及mysql数据库的脚本代码
Jun 10 Python
Python实现过滤单个Android程序日志脚本分享
Jan 16 Python
Python正则表达式使用范例分享
Dec 04 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
python dumps和loads区别详解
Feb 04 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
python中random模块详解
Mar 01 Python
python数据处理之Pandas类型转换
Apr 28 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
php email邮箱正则
2008/10/08 PHP
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
js DOM的学习笔记
2011/12/22 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
Django处理文件上传File Uploads的实例
2018/05/28 Python
人工神经网络算法知识点总结
2019/06/11 Python
python set内置函数的具体使用
2019/07/02 Python
简单了解python代码优化小技巧
2019/07/08 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
python2和python3哪个使用率高
2020/06/23 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
高中自我鉴定范文
2013/11/03 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
青年文明号复核材料
2014/02/11 职场文书
基层工作经验证明样本
2014/11/16 职场文书
法律意见书范本
2015/06/04 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电