文章目录
- 前言
- 一、实现步骤
- 二、请求天气接口
- 1.引入库
- 2.读入数据
- 3.钉钉通知天气预报
- 总结
前言
早上出门上班前,我总是忘记查看天气预报,以至于通勤路上下雨来了个措手不及。
回想起来,大部分人早上出门前的行为模式是固定的,那么有没有办法能在我出门前的那一分钟提醒我带伞或者是穿外套?
答案是肯定的,我们就能实现这个目的。
一、实现步骤
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
如果你没有阅读上一篇关于钉钉机器人的文章,请记得阅读,有一些前置知识是你必须知道的:
二、请求天气接口
有一个网站服务叫做:wttr.in 提供了非常方便的天气接口,比如:
https://wttr.in/Shenzhen?&lang=cn
效果如下:
1.引入库
我们可以通过这个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
2.读入数据
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
如果你希望让刚刚的未来三天天气预报输出成为图片格式,它也能实现:
curl ‘https://wttr.in/Shenzhen.png’
不仅如此,它还支持分时天气预报:
这一张图就是我们要自动通知的天气预报,下面就告诉大家如何把这种图嵌入到钉钉通知中。
3.钉钉通知天气预报
使用我们上一回讲过的钉钉通知机器人,7行代码就能搞定这个需求:
https://github.com/Ckend/dd_notice
7行?没想到吧,基于markdown发送通知就是如此的简单:
import datetime
from notice import Messenger
m = Messenger(
tk="你的tk",
st="你的st"
)
m.send_md(f"天气预报-{datetime.datetime.today()}", "![weather](https://v2d.wttr.in/Shenzhen.png)")
将上回的源代码拉下来后,增加这7行代码,你只需要修改你的 token 和 secret 就能发送天气预报。
注意,请求的链接里拿的还是ShenZhen的天气预报,你可以改成自己所在的城市,也可以自定义任何自己喜欢的图表。效果如下:
然后为了实现每天的定时发送,你只需要把代码放到服务器上,使用crontab配置定时任务即可:
# 输入 crontab -e 增加下面这一行,每天早上8:00运行通知脚本
0 8 * * * python /data/dd_notice/weather_notice.py
总结
我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注徐浪老师大讲堂