日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 企业微信群机器人_python生成折线图并调用企业微信群机器人发送图片消息...

發(fā)布時間:2024/1/1 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 企业微信群机器人_python生成折线图并调用企业微信群机器人发送图片消息... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

利用企業(yè)微信群機器人可以推送三種類型的消息,文本信息、markdown格式、圖文消息。

前面寫過文本消息、markdown格式文本消息的推送,公司小伙伴覺得如果能把最近的業(yè)績數(shù)據(jù)生成曲線圖發(fā)送到群里,就更直觀了。這當然也難不到phthon,要知道python在科學計算和圖表生成方面可是很強的。

企業(yè)微信群機器人發(fā)送圖片消息的格式如下:企業(yè)微信群機器人接口說明

圖片消息是以base64編碼方式發(fā)送的,需要生成圖片的base64編碼和文件的md5值,所以這個功能中需要用到python的幾個庫:

import time # 用于取當前時間,生成圖片文件名用的

import pymssql # 連接數(shù)據(jù)庫的操作

import requests # 請求接口

import matplotlib.pyplot as plt # 生成圖表

import hashlib # 生成圖片文件的md5

import os # 文件操作

import base64 # 生成圖片文件的base64編碼

看上去并不復雜的功能,需要用到以上7個庫,涉及的知識內容還是有點多的,具體實現(xiàn)的程序流程如下:程序流程

最后實現(xiàn)的效果如下(我只做了一個簡單的折線圖,要生成其它圖形也是可以的,原理一樣,舉一反三吧):生成折線圖并自動發(fā)送到群的效果

下面是奉上完整代碼:

# -*- coding: utf-8 -*-

# s = '中文' # 注意這里的 str 是 str 類型的,而不是 unicode

# s.encode('gb2312')

import time

import pymssql

import requests

import matplotlib.pyplot as plt

import hashlib

import os

import base64

# 獲取文件的Base64編碼

def get_file_base64(filepath):

if not os.path.isfile(filepath):

return

with open(filepath, "rb") as f:

image = f.read()

image_base64 = str(base64.b64encode(image), encoding='utf-8') # 這里要說明編碼,否則不成功

return image_base64

# 獲取文件md5函數(shù)

def get_file_md5(filepath):

# 獲取文件的md5

if not os.path.isfile(filepath):

return

myhash = hashlib.md5()

f = open(filepath, "rb")

while True:

b = f.read(8096)

if not b:

break

myhash.update(b)

f.close

# print(myhash.hexdigest())

return myhash.hexdigest()

# 發(fā)送消息函數(shù), msgtype定義:text 發(fā)送字符串消息,markdown 發(fā)送圖片消息,image 發(fā)送圖片消息, news 發(fā)送圖文消息

def postmsg(url, post_data, msgtype):

# sss = "這是一條用python發(fā)送的測試信息,請忽略!"

post_data = '{"msgtype" : "%s", "%s" : %s}' % (msgtype, msgtype, post_data)

# post_data = '{"msgtype": "markdown","markdown": {"content": "%s"}}' % sss

# print(post_data)

if url == '':

print('URL地址為空!')

else:

r = requests.post(url, data=post_data.encode())

rstr = r.json()

if r.status_code == 200 and 'error' not in rstr:

result = '發(fā)送成功'

return result

else:

return 'Error'

def querySQL():

# 數(shù)據(jù)庫連接配置

config_dict = {

'user': '***',

'password': '******',

'host': '******',

'database': '******'

}

def conn():

connect = pymssql.connect(**config_dict)

if connect:

print("connect success!!!")

return connect

else:

print("連接失敗!請檢查配置信息!")

conn = conn()

cursor = conn.cursor()

sql = "select * from [TableName] order by [Fields]" # 編寫SQL查詢字符串

cursor.execute(sql)

col = cursor.description

resultdata = cursor.fetchall()

return resultdata, col

cursor.close()

conn.close()

if __name__ == '__main__':

url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*******-****-****-****-******" # 群機器人地址

resultdata, col = querySQL()

# print(resultdata)

# print(col) 查詢到的表的列名

datelist = []

for i in range(len(resultdata)):

datelist.append(resultdata[i][0])

# print(datelist)

saleslist = []

for j in range(len(resultdata)):

saleslist.append(int(resultdata[j][1]))

# print(saleslist) # 銷售數(shù)據(jù)清單

# 刻度和序列值

x_data = datelist

y_data = saleslist

# plt.plot(x_data, y_data)

# 設置畫布大小

plt.figure(figsize=(16, 8))

plt.title("The Recent 7 Days Sales")

plt.plot(x_data, y_data, label='金額', linewidth=3, color='black', marker='o', markerfacecolor='r',

markersize=10) # 標記點

# 設置數(shù)字標簽

for a, b in zip(x_data, y_data):

plt.text(a, b, b, ha='center', va='bottom', fontsize=14)

# 取當前時間為文件名

pic_full_name = './' + time.strftime("%Y%m%d%H%M%S", time.localtime()) + '.jpg'

plt.savefig(pic_full_name)

pic_md5 = get_file_md5(pic_full_name)

pic_base64s = get_file_base64(pic_full_name)

# print(pic_md5)

# print(pic_base64s)

# plt.show() # 顯示圖表

out_mk_msg = "### 最近七天市場業(yè)績:\n"

for i in range(len(resultdata)):

out_mk_msg = out_mk_msg + r">日期:%s , 業(yè)績:%d , 店數(shù):%s , 新會員:%s , 老會員:%s " % (

resultdata[i][0], resultdata[i][1], resultdata[i][2], resultdata[i][3], resultdata[i][4]) + "\n"

out_mk_msg = '{"content": "%s"}' % out_mk_msg

# print(out_mk_msg)

# 調用postmsg向接口提交數(shù)據(jù),分別提并markdwon格式及圖片格式消息

result = postmsg(url, out_mk_msg, "markdown")

# print(result)

out_pic_msg = '{"base64":"%s", "md5":"%s"}' % (pic_base64s, pic_md5)

result = postmsg(url, out_pic_msg, "image")

print(result)

代碼運行環(huán)境為phthon3.8,如果把以上代碼設定為windows任務計劃,就可以實現(xiàn)定時自動推送了。至此,企業(yè)微信群機器人的幾種調用方式,還差一種圖文消息沒有寫了:)

贈人玫瑰、手留余香,如果本文對你有用,順手點個贊吧,謝謝!

總結

以上是生活随笔為你收集整理的python 企业微信群机器人_python生成折线图并调用企业微信群机器人发送图片消息...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。