高德地图API获取天气信息

2023年03月13日星期一晴北京市北京师范大学,近几天一直想解决的问题有两个,其一是自动检测gitlab-runner是否以用户模式运行,不知道从何时起最初的以一个长期驻留的服务运行的gitlab-runner的用户默认是root,这导致了后来的写完日志后不能及时的发布博客,所以近期文章暂停了挺长时间。但是近两天又遇到了一个问题,那就是当开启diary时,居然一直处于停顿状态,不能很好的工作,分析原因是脚本中使用curlwttr.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后,工作转向高德地图,以后视具体情况再增加相应功能到脚本中。

天气对照表

使用脚本获取天气信息后,具体的天气表示含义可以参考天气对照表