- 摘要
- 实 ***
- 代码分析
- 需求来源与路径选择
- 参考
本文给出利用 WxPusher 提供的 web api 与 python SDK 两种方式,实现微信发送的 python 代码样例,并简单点评了运维自动化状态通报的几种方式及实现路径。
实 ***-
注册 WxPusher 应用并记录 APP_TOKEN。前往 WxPusher 的管理后台,注册一个应用,其中应用名字、联系方式、推送内容说明 都是展示给最终用户的,可以随便写。至于事件回调地址是用来实现诸如“用户扫码关注后的通知”、“获取新关注用户UID”、“用户通过手机发送信息给应用从而实现远程控制”等目的,需要自行部署一个互联网 web 应用,并将接收到的 json 数据进一步处理。提示:应用创建成功后,请复制并妥善保存 APP_TOKEN。
-
关注应用并记录 UID。在 WxPusher 的管理后台,点击左侧功能菜单下方的应用管理–>关注应用菜单项,用自己的微信扫码该二维码即可。关注成功后,可以在管理后台的用户管理–>用户列表菜单项中,看到本应用唯一的一个关注用户,抄录下自己的 UID。
-
安装 python SDK。直接使用
pip install -U wxpusher
即可 -
代码实现。WxPusher 提供了两种手段来发送信息,一个是 web api,一个是 SDK 包。现将两种方式以 python 代码展示一下。新建工程文件 test_wxpusher.py,内容如下:
import requests from wxpusher import WxPusher # https://github.com/wxpusher/wxpusher-sdk-python app_token = 'AT_********' # 本处改成自己的应用 APP_TOKEN uid_myself = 'UID_********' # 本处改成自己的 UID def wxpusher_send_by_webapi(msg): """利用 wxpusher 的 web api 发送 json 数据包,实现微信信息的发送""" webapi = 'http://wxpusher.zjiecode.com/api/send/message' data = { "appToken":app_token, "content":msg, "summary":msg[:99], # 该参数可选,默认为 msg 的前10个字符 "contentType":1, "uids":[ uid_myself, ], } result = requests.post(url=webapi,json=data) return result.text def wxpusher_send_by_sdk(msg): """利用 wxpusher 的 python SDK ,实现微信信息的发送""" result = WxPusher.send_message(msg, uids=[uid_myself,], token=app_token, summary=msg[:99]) return result def main(msg): result1 = wxpusher_send_by_webapi(msg) result2 = wxpusher_send_by_sdk(msg) print(result1) print(result2) if __name__ == '__main__': main('hello, world!')
-
最终效果。运行上述代码,在手机微信上,即可收到如下信息:
-
下一步计划。可以利用 Flask 实现一个简易的 web 服务,提供回调地址给 WxPusher,以便实现用户指令响应等功能。
关于步骤4的代码中 web api 与 python SDK 两种方式,其本质上是一样的。因为我们打开 python SDK 的github源代码,就可以发现 wxpusher.send_message
函数的定义,与我的 wxpusher_send_by_webapi
函数几乎一致。
我们可以看到,第二条消息是用 python SDK 发送的,其摘要信息依旧按默认10个字符来。打开 python 安装目录下的 \Lib\site-packages\wxpusher\wxpusher.py
,可以看到 send_message
接口还不是很完善,尚未加入 summary
参数。而若是查看github源代码,则可以发现 summary
参数已经完善了。因此应该是作者没有及时更新 PYPI 上的安装包导致。这可以自己手工修改一下本地 wxpusher.py
文件即可。
我有个小项目,自动在后台运行,希望实时将项目的运行状态报给我自己。这可以通过许多种方法实现,各有优缺点,大致如下:
- 邮件。接口复杂,不够实时
- 短信。接口复杂,需要费用
- 各类即时通信软件。接口有简单有复杂,免费,实时,无法长期保存状态
- web页面。需要一台互联网服务器提供 web 服务,可以长期保存状态,需要主动查询。
考虑到微信已经是每天必看,最实时,且这个项目的运行状态无需长期保存,因此最终决定选择微信。因此最终需求如下:
- 能够通过微信发送信息给自己
- 能够支持 python
- 接口越简单越好
大致上,用 python 发微信可以有几种方式:
- 全模拟手工 *** 作。可以通过 pyautogui 之类的 RPA(Robotic Process Automation,机器人流程自动化)软件,模拟人工在电脑上发送微信信息。这要占用一台电脑资源。
- 通过第三方微信公众号提供的次级接口。比如本文选择的 WxPusher,还有itchat、wechaty、wxpy 等,但后几个往往容易受制于微信的 web 登录能力而无法使用,将来再试试。
- 通过微信自己提供的各类 api,实现信息发送。这需要写的代码比较多,技术要求略高。
综上,选择 WxPusher 来实现自动化工程的进度提示微信,还是很不错的。
参考- WxPusher官方文档
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)