早上出门上班前,我总是忘记查看天气预报,以至于通勤路上下雨来了个措手不及。
回想起来,大部分人早上出门前的行为模式是固定的,那么有没有办法能在我出门前的那一分钟提醒我带伞或者是穿外套?
答案是肯定的,通过上回的《钉钉机器人》,我们就能实现这个目的。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
如果你没有阅读上一篇关于钉钉机器人的文章,请记得阅读,有一些前置知识是你必须知道的:
2.请求天气接口
有一个网站服务叫做:wttr.in 提供了非常方便的天气接口,比如:
https://wttr.in/Shenzhen?&lang=cn
效果如下:
我们可以通过这个API,获得全天的天气预报。
它支持很多形式,比如单行输出:
$ curl wttr.in/Nuremberg?format=3
Nuremberg: 🌦 +11⁰C
或者一次处理所有城市的这些查询:
$ curl -s 'wttr.in/{Nuremberg,Hamburg,Berlin}?format=3'
Nuremberg: 🌦 +11⁰C
Hamburg: 🌦 +8⁰C
Berlin: 🌦 +8⁰C
如果你希望让刚刚的未来三天天气预报输出成为图片格式,它也能实现:
curl 'https://wttr.in/Shenzhen.png'
不仅如此,它还支持分时天气预报:
这一张图就是我们要自动通知的天气预报,下面就告诉大家如何把这种图嵌入到钉钉通知中。
3.钉钉通知天气预报
使用我们上一回讲过的钉钉通知机器人,7行代码就能搞定这个需求:
https://github.com/Ckend/dd_notice
7行?没想到吧,基于markdown发送通知就是如此的简单:
import datetime
from notice import Messenger
m = Messenger(
token="你的token",
secret="你的secret"
)
m.send_md(f"天气预报-{datetime.datetime.today()}", "![weather](https://v2d.wttr.in/Shenzhen.png)")
将上回的源代码拉下来后,增加这7行代码,你只需要修改你的 token 和 secret 就能发送天气预报。
注意,请求的链接里拿的还是ShenZhen的天气预报,你可以改成自己所在的城市,也可以自定义任何自己喜欢的图表。效果如下:
所有的源代码都已经放在:
https://github.com/Ckend/dd_notice
喜欢的话记得点个Star, 如果你上不了Github,Python实用宝典公众号后台回复天气预报也能下载完整的通知源代码。
然后为了实现每天的定时发送,你只需要把代码放到服务器上,使用crontab配置定时任务即可:
# 输入 crontab -e 增加下面这一行,每天早上8:00运行通知脚本
0 8 * * * python /data/dd_notice/weather_notice.py
我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
点击下方阅读原文可获得更好的阅读体验
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典