早上出门上班前,我总是忘记查看天气预报,以至于通勤路上下雨来了个措手不及。
回想起来,大部分人早上出门前的行为模式是固定的,那么有没有办法能在我出门前的那一分钟提醒我带伞或者是穿外套?
答案是肯定的,通过上回的钉钉机器人,我们就能实现这个目的。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器来编写小型Python项目: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
如果你上不了Github,Python实用宝典公众号后台回复天气预报也能下载完整的通知源代码。
然后为了实现每天的定时发送,你只需要把代码放到服务器上,使用crontab配置定时任务即可:
# 输入 crontab -e 增加下面这一行,每天早上8:00运行通知脚本 0 8 * * * python /data/dd_notice/weather_notice.py
我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典