python向企業(yè)微信發(fā)送文字和圖片消息的示例
吐槽一下企業(yè)微信的api文檔真的不好讀······
企業(yè)微信本來是有功能,可以直接把圖片顯示到正文的,但是那個api我調(diào)用一直出錯,各種折騰也沒解決。后來感覺就算了,沒必要,用url拼接在文字中也行,這樣的好處就是以后可以換圖床,不局限在企業(yè)微信內(nèi)部(好像免費版一天之內(nèi)可以上傳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": '【管理員注意】,有校園暴力行為發(fā)生,請及時處理!監(jiān)控圖片>>' + 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)
在主線程里面調(diào)用那個send_violence_warning_in_new_thread,把opencv的圖片傳進來就行
效果:

雖然是url,但是效果其實也挺好的,點一下就能顯示了,即使是第三方圖床也沒有提示什么的,操作速度也很快,沒有其他幺蛾子
以上就是python向企業(yè)微信發(fā)送文字和圖片消息的示例的詳細內(nèi)容,更多關(guān)于python發(fā)送文字和圖片的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實例
這篇文章主要介紹了keras訓(xùn)練淺層卷積網(wǎng)絡(luò)并保存和加載模型實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Python while循環(huán)使用else語句代碼實例
這篇文章主要介紹了Python while循環(huán)使用else語句代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2020-02-02
如何從csv文件構(gòu)建Tensorflow的數(shù)據(jù)集
這篇文章主要介紹了如何從csv文件構(gòu)建Tensorflow的數(shù)據(jù)集,幫助大家更好的理解和使用Tensorflow,感興趣的朋友可以了解下2020-09-09
Python內(nèi)置數(shù)據(jù)類型中的集合詳解
這篇文章主要為大家詳細介紹了Python內(nèi)置數(shù)據(jù)類型中的集合,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
2018年P(guān)ython值得關(guān)注的開源庫、工具和開發(fā)者(總結(jié)篇)
本文給大家總結(jié)了2018年P(guān)ython值得關(guān)注的開源庫、工具和開發(fā)者,需要的朋友可以參考下2018-01-01
Tensorflow實現(xiàn)在訓(xùn)練好的模型上進行測試
今天小編就為大家分享一篇Tensorflow實現(xiàn)在訓(xùn)練好的模型上進行測試,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01

