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中shutil模块的学习笔记教程
Apr 04 Python
Python实现句子翻译功能
Nov 14 Python
Python json模块dumps、loads操作示例
Sep 06 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
Python3.5文件修改操作实例分析
May 01 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
Python笔记之facade模式
Nov 20 Python
Python 绘制可视化折线图
Jul 22 Python
Python中对象的比较操作==和is区别详析
Feb 12 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
用PHP创建PDF中文文档
2006/10/09 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
python利用Guetzli批量压缩图片
2017/03/23 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
关于读书的演讲稿
2014/05/07 职场文书
电视节目策划方案
2014/05/16 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
Python源码解析之List
2021/05/21 Python
redis cluster支持pipeline的实现思路
2021/06/23 Redis
Python PIL按比例裁剪图片
2022/05/11 Python