武汉新冠状病毒肺炎疫情信息推送:抓取 Telegram 频道 @nCoV2019 进行通知。
现在已经支持转发频道内容到微信,钉钉群和微博 @聚合提醒。
发送微博:WeiboSender
为什么不使用频道提供的 RSS ?因为 RSS 内容不实时。
为什么不抓取丁香园?因为丁香园聚合信息不够全。
爬虫 spider.py
可单独使用,已经解析出id, tag, city, title, text, refUrl
- Python3 +
在 Python3.5, Python3.6, Python3.7 下经过测试。
git clone https://github.com/wangke0809/2019-nCoV-Push.git
pip install -r requirements.txt
cp config.py.example config.py
支持过滤城市进行推送,在配置文件中配置需要通知的城市。
考虑到部分同学墙内部署,增加了镜像站爬虫,数据来自墙内镜像地址:http://2019ncov.tk/ ,在配置文件中配置 TelegramMirror
即可。
微信通知使用方糖大叔的 Server酱,修改配置文件填写 Token 即可。
钉钉群机器人 API Token 申请参考:官方文档
直接发微博:修改配置文件中微博发送地址和 cookie 即可。微博需要在网页版手动抓取登陆 Cookie,且过期时间较短。
由于部署在 AWS 海外区域,发现直接使用 Cookie 调用微博发送接口失败,于是在腾讯云云函数(SCF)上实现发送微博,进行远程调用。(阿里云同理,当然也可以自建服务)
~~如需使用云函数 SCF ,将 weibo.py
与 weiboSCF.py
上传至腾讯云 SCF,配置 API 网关触发方式即可,当然要修改weiboSCF.py
里面的 Cookie
配置。 ~~
不建议使用上述方法,推荐使用WeiboSender,登陆态维持时间长且比较稳定。
python main.py
Github Actions 运行时可直接访问 Telegram ,解决了国内服务器不能访问某些资源的问题,运行记录见:这里
Github Actions 需要通过 Redis 记录已通知消息 id,配置文件中 Redis
配置项格式为 redis://:password@host:6379/0
。
已经配置了每隔 5 分钟自动运行脚本,需要在配置文件中通过环境变量配置需要使用的通知方式,同时将通知需要的 Token 设置在项目的 secret
里。
需要的环境变量:
DingTalkToken: ${{ secrets.DingTalkToken }}
DingTalkWord: ${{ secrets.DingTalkWord }}
RedisUrl: ${{ secrets.RedisUrl }}
WeiboUrl: ${{ secrets.WeiboUrl }}
当前脚本启动命令如下,可根据需求修改
cp config.py.example config.py
python main.py action
![]() |
![]() |
![]() |
---|---|---|
钉钉群机器人 | 微信Server酱 | 微博 |