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数据结构之二叉树的遍历实例
Apr 29 Python
python中的函数用法入门教程
Sep 02 Python
跟老齐学Python之集合的关系
Sep 24 Python
Python中实现的RC4算法
Feb 14 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
详解supervisor使用教程
Nov 21 Python
python爬取指定微信公众号文章
Dec 20 Python
Python 监测文件是否更新的方法
Jun 10 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
Python笔记之facade模式
Nov 20 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
Python实现AES加密,解密的两种方法
Oct 03 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设计模式 Composite (组合模式)
2011/06/26 PHP
php向js函数传参的几种方法
2014/08/10 PHP
php画图实例
2014/11/05 PHP
又一个小巧的图片预加载类
2007/05/05 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python的迭代器和生成器
2015/07/29 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
python数据预处理方式 :数据降维
2020/02/24 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
师德个人剖析材料
2014/02/02 职场文书
本科生自荐信
2014/06/18 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
天坛导游词
2015/02/02 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
养成教育工作总结
2015/08/13 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL