阅读 322

<Python启发式自动化>之微信推送

<Python启发式自动化>之微信推送

Server酱

关于类如消息推送或机器人管理方面微信开放文档并没有给出简单易用的 API 接口, 这里使用的是 Server酱 服务推送通知。

Server酱

你只需要注册/登陆 Server酱 平台并扫码绑定微信公众号,对,Server酱本质是一个公众号,一个可以为你推送通知信息的公众号。

成功绑定后返回一个 SCKEY,相当于一个认证 KEY,用他们的话说,SCKEY 是非常重要的,所以请妥善保存,不要随便告诉别人。另外同样内容的消息一分钟只能发送一次,服务器只保留一周的消息记录。

具体接口如下:

https://sc.ftqq.com/[SCKEY].send

它接受两个参数:

  • text:消息标题,最长为256,必填。
  • desp:消息内容,最长64Kb,可空,支持MarkDown

PS: 此接口同时支持 GETPOST 请求。虽然我觉得并不合理,但它还是这么做了

所以你甚至没有必要编写代码,在浏览器地址栏键入API并传入必要参数也能发送通知,比如 https://sc.ftqq.com/[SCKEY].send?text=来自 PI 的问候

不出所料,很快就收到了一条来自 PI 哥的问候

SERVER酱GET.png

SERVER酱通知.png

Python 实现

# -*- coding: utf-8 -*
# @Time : 2020/10/30 9:48

import requests

# 是否开启微信通知
notice_enable = True
# server酱key
sckey = "SCU1218....1e9fac5f9b79369b576"
# 信息主体
desp = ''' 
**杭州天气** \n
> 900度,西北风1级,空气良8009,相对温度673%\n
> [![hello](https://images.pexels.com/photos/3369569/pexels-photo-3369569.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260)](https://www.dingtalk.com)\n
> ###### 10点20分发布 [天气](https://www.dingtalk.com) \n
'''
message = {
    "subject": "来自 PI 的问候",
    "content": desp
}


class SendMsg(object):
    def send(self, message):
        if not notice_enable:
            print("未开启微信通知")
            return
        url = f"https://sc.ftqq.com/{sckey}.send"
        r = requests.post(url, data={"text": f'{message["subject"]}', "desp": message["content"]})
        if r.status_code == requests.codes.ok:
            print("微信通知发送成功")
        else:
            print("微信通知发送失败")


S = SendMsg()
S.send(message)
复制代码

与浏览器地址栏相反,我们提交了一个 POST 请求,并且使用了Markdown 语法,大大增强了可读性。

文章分类
阅读
文章标签