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实现360的字符显示界面
Feb 21 Python
python调用fortran模块
Apr 08 Python
pandas中Timestamp类用法详解
Dec 11 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
python字符串常用方法
Jun 14 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
详解Python3 pandas.merge用法
Sep 05 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
Feb 23 Python
python3读取autocad图形文件.py实例
Jun 05 Python
Python 高效编程技巧分享
Sep 10 Python
基于Python正确读取资源文件
Sep 14 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中的多态性[译]
2011/08/02 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
js 字符串操作函数
2009/07/25 Javascript
jQuery 技巧小结
2010/04/02 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
2012/02/03 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
Python装饰器的函数式编程详解
2015/02/27 Python
简单上手Python中装饰器的使用
2015/07/12 Python
python 输出上个月的月末日期实例
2018/04/11 Python
Python 加密与解密小结
2018/12/06 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
若干个Java基础面试题
2015/05/19 面试题
工厂仓管员岗位职责
2014/01/01 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
和睦家庭事迹
2014/05/14 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
给客户的检讨书
2014/12/21 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android