群辉NAS信息提醒大师
我把这个信息定在了每天早上七点发送,笔者基本每天早上都会浏览一遍微信的消息,所以这个消息也能准时接收到,可以同步时间、查看天气、推送新闻还能获取油价信息,方便了我的生活。今天也向大家开源这个项目。
家里有NAS或者常年不关的电脑都可以直接部署。
功能展示
方案
目前可以通过企业微信API来给微信发送信息。
- 进入企业微信后台->应用管理->自建应用->创建应用
- 填写应用信息
- 创建完成之后进入自建的应用中, 获取 AgentId Secret (编辑可见人员) --> 我的企业-企业信息 获取企业ID --> 我的企业-微信插件 微信扫一扫加入企业 --> api 推送消息
企业微信发送信息API:https://work.weixin.qq.com/api/doc/90000/90135/90236
使用API发送信息基本框架
有了这个框架并且填写corpid
,corpsecret
,access_token
,agentid
就能实现将信息发送至微信。
有了这个发送消息的基本功能就能根据自己的想法添加相应的功能。
import requests
from Pylog import LogErr, LogWarn, LogInfo
import json
class WXPost:
"""
自动推送消息给微信类
"""
corpid = "" # 企业微信ID
corpsecret = "" # Secret是用于保障数据安全的“钥匙”
access_token = "" # 企业微信访问API授权码
agentid = 0 # 企业应用的id
def GetToken(self):
"""
获取企业微信API接口的access_token函数
https://open.work.weixin.qq.com/api/doc/90000/90135/91039
"""
request_url = (
"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + self.corpid + "&corpsecret=" + self.corpsecret
)
try:
req = requests.post(request_url)
except requests.exceptions.ConnectTimeout:
LogErr("Connect "+ request_url +"timeout!")
except requests.exceptions.ConnectionError:
LogErr("Connect "+ request_url +"Error!")
else:
req_js=json.loads(req.text)
if req_js['errmsg'] == "ok":
self.access_token = req_js["access_token"]
LogInfo("Get access_token success!")
else:
LogWarn("Get access_token failed!")
def SendMessage(self, msgtype, user, msg):
"""
发送消息函数
https://open.work.weixin.qq.com/api/doc/90000/90135/90236#markdown%E6%B6%88%E6%81%AF
msgtype:消息类型
user:发送的用户
msg:消息内容
"""
request_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + self.access_token
body = {
"touser": user,
"msgtype": msgtype,
"agentid": self.agentid,
msgtype: {"content": msg},
"safe": 0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}
body_js = json.dumps(body)
try:
req = requests.post(request_url, data=body_js)
except requests.exceptions.ConnectTimeout:
LogErr("Connect "+ request_url +"timeout!")
except requests.exceptions.ConnectionError:
LogErr("Connect "+ request_url +"Error!")
else:
req_js=json.loads(req.text)
if req_js['errmsg'] == "ok":
LogInfo("SendMessage success!")
else:
LogWarn("SendMessage failed!")
如何调用这些函数
Wxcorpid = "xxx"
Wxcorpsecret = "xxx"
wx = WXPost()
wx.corpid = Wxcorpid
wx.corpsecret = Wxcorpsecret
wx.agentid = 1000002
wx.GetToken()
msg = " ---------每日工作提醒---------"
wx.SendMessage("text", "@all", msg) # 这边user写成@all意思是发送给企业内的所有人
该程序的功能和对应的源文件
该程序用的最多的也就是爬虫,所有信息都来自网络。
脚本 | 介绍 |
---|---|
Holiday.py | 计算节假日 |
Pylog.py | Log内容输出 |
Weather.py | 获取天气信息 |
WxPost.py | 企业微信Api |
Run.py | 主要运行的文件 |
News.py | 获取网易新闻每日要闻 |
CityOil.py | 获取城市油价 |
当然了,除了可以实现向微信推送信息,还能实现获取用户向微信发送的信息,根据信息执行命令,玩法多样。
更高深的还可以跑一个油价预测.
开源下载地址:https://github.com/JackyMao1999/Jackyrequests/tree/master/WxSend