利用 WxPusher 的 web api 及 python SDK 两种方式给自己发微信

利用 WxPusher 的 web api 及 python SDK 两种方式给自己发微信,第1张

目 录
  • 摘要
  • 实 ***
  • 代码分析
  • 需求来源与路径选择
  • 参考

摘要

本文给出利用 WxPusher 提供的 web api 与 python SDK 两种方式,实现微信发送的 python 代码样例,并简单点评了运维自动化状态通报的几种方式及实现路径。

实 ***
  1. 注册 WxPusher 应用并记录 APP_TOKEN。前往 WxPusher 的管理后台,注册一个应用,其中应用名字、联系方式、推送内容说明 都是展示给最终用户的,可以随便写。至于事件回调地址是用来实现诸如“用户扫码关注后的通知”、“获取新关注用户UID”、“用户通过手机发送信息给应用从而实现远程控制”等目的,需要自行部署一个互联网 web 应用,并将接收到的 json 数据进一步处理。提示:应用创建成功后,请复制并妥善保存 APP_TOKEN。

  2. 关注应用并记录 UID。在 WxPusher 的管理后台,点击左侧功能菜单下方的应用管理–>关注应用菜单项,用自己的微信扫码该二维码即可。关注成功后,可以在管理后台的用户管理–>用户列表菜单项中,看到本应用唯一的一个关注用户,抄录下自己的 UID。

  3. 安装 python SDK。直接使用 pip install -U wxpusher 即可

  4. 代码实现。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!')
    
  5. 最终效果。运行上述代码,在手机微信上,即可收到如下信息:

  6. 下一步计划。可以利用 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 文件即可。

需求来源与路径选择

我有个小项目,自动在后台运行,希望实时将项目的运行状态报给我自己。这可以通过许多种方法实现,各有优缺点,大致如下:

  1. 邮件。接口复杂,不够实时
  2. 短信。接口复杂,需要费用
  3. 各类即时通信软件。接口有简单有复杂,免费,实时,无法长期保存状态
  4. web页面。需要一台互联网服务器提供 web 服务,可以长期保存状态,需要主动查询。

考虑到微信已经是每天必看,最实时,且这个项目的运行状态无需长期保存,因此最终决定选择微信。因此最终需求如下:

  • 能够通过微信发送信息给自己
  • 能够支持 python
  • 接口越简单越好

大致上,用 python 发微信可以有几种方式:

  1. 全模拟手工 *** 作。可以通过 pyautogui 之类的 RPA(Robotic Process Automation,机器人流程自动化)软件,模拟人工在电脑上发送微信信息。这要占用一台电脑资源。
  2. 通过第三方微信公众号提供的次级接口。比如本文选择的 WxPusher,还有itchat、wechaty、wxpy 等,但后几个往往容易受制于微信的 web 登录能力而无法使用,将来再试试。
  3. 通过微信自己提供的各类 api,实现信息发送。这需要写的代码比较多,技术要求略高。

综上,选择 WxPusher 来实现自动化工程的进度提示微信,还是很不错的。

参考
  • WxPusher官方文档

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/716941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存