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 Django连接MySQL数据库做增删改查
Nov 07 Python
python用字典统计单词或汉字词个数示例
Apr 22 Python
Windows下安装python2.7及科学计算套装
Mar 05 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
Django REST framework 分页的实现代码
Jun 19 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
pygame实现俄罗斯方块游戏(基础篇1)
Oct 29 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
详解python中各种文件打开模式
Jan 19 Python
Python环境配置实现pip加速过程解析
Nov 27 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的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
关于svn冲突的解决方法
2013/06/21 PHP
php无限遍历目录示例
2014/02/21 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
JavaScript中的类继承
2010/11/25 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
javascript控制台详解
2015/06/25 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
悬挂训练绳:TRX
2017/12/14 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
大学生毕业自荐信
2013/10/10 职场文书
财务工作者先进事迹材料
2014/01/17 职场文书
学生宿舍管理制度
2014/01/30 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
工资收入证明
2014/10/07 职场文书
党小组意见范文
2015/06/08 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android
CentOS安装Nginx并部署vue
2022/04/12 Servers
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫