高德地图API获取天气信息
2023年03月13日星期一晴北京市北京师范大学,近几天一直想解决的问题有两个,其一是自动检测gitlab-runner
是否以用户模式运行,不知道从何时起最初的以一个长期驻留的服务运行的gitlab-runner
的用户默认是root
,这导致了后来的写完日志后不能及时的发布博客,所以近期文章暂停了挺长时间。但是近两天又遇到了一个问题,那就是当开启diary
时,居然一直处于停顿状态,不能很好的工作,分析原因是脚本中使用curl
从wttr.in
申请天气信息,但是这个网站是德国的,最近不知道什么原因不能访问了,这导致了系统一直不能正常运行及正常获取天气信息。这是本文的发布原因,下面提出解决方法。
使用高德地图API取得天气信息
此处参考官方文档:天气查询-API文档-开发指南-Web服务API
,需要注意的要使用API,必须先在高德开放平台右上角点注册,然后获得一个帐,同时申请一个key
,这个在调用API
时需要。方法请参考知乎上的文章如何申请高德地图用户Key。在注册时需要实名认证,这可以选择使用支付宝扫码认证就好。
高德地图获取IP对应的城市编码
在上一节使用API获取天气时,需要指明城市编号,也就是身份证的前几位的那个编号。但是全国这么大,总不能将所有信息都写入到程序中吧,所以这就需要根据本机IP
获取对应的城市编码。方法请参考IP定位
获取本机IP地址
由于上一节需要根据IP
来获取对应的城市及城市编码,这里我使用的方法是curl
请求cip.cc
,即
1 | curl -s cip.cc |
这个网站直接返回对应的城市和IP
地址及详细的网络出口运营商等信息,此处的目的是使用其IP
,这用awk
可以方便获取。对于城市,使用这个方法不仅可以获得城市还能获取具体的单位,所以在脚本中我就直接使用了这个方法中的城市和单位。获取IP
后,工作转向高德地图,以后视具体情况再增加相应功能到脚本中。
天气对照表
使用脚本获取天气信息后,具体的天气表示含义可以参考天气对照表