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数据类型转换函数总结
Mar 11 Python
EM算法的python实现的方法步骤
Jan 02 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
Sanic框架Cookies操作示例
Jul 17 Python
python 同时运行多个程序的实例
Jan 07 Python
PyQt5笔记之弹出窗口大全
Jun 20 Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
Jul 28 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 Python
Pytest之测试命名规则的使用
Apr 16 Python
python使用glob检索文件的操作
May 20 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实现的发送带附件邮件类实例
2014/09/22 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python闭包函数定义与用法分析
2018/07/20 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
C#笔试题集合
2013/06/21 面试题
报到证丢失证明
2014/01/11 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电