AQI 超标提醒

现在空气成为大家关注的话题了,AQI 超标能够及时提醒自己的话还是很人性化的,许多天气 app 都可以实现这功能,我懒得再装个天气 app 了,虽然自带的也有 pm2.5 的数值,桌面小插件我也不记得每天都看下它,真是懒到家了还是通知提醒我比较靠谱。这就是本文的由来了。

作为没有 vps 的人,没有24小时在线的服务器定时运行脚本,所以本地 python 就不做考虑了,但是我们有谷歌XD。

那么我们需要做的就是:

  1. 获取 AQI 数值的 api
  2. 制作 rss
  3. rss 更新就提醒自己

功能 2 的启发来自于 binux 关于 gas 的使用,让我们可以轻松实现 rss 的制作。顺便说下大大 github 的签到和爬虫框架都非常实用,不容错过。

http://aqicn.org/api/ 申请个令牌,查看 api 文档,我这里只用了一个简单的 get 命令就行了。gas 生成 rss,代码如下

function doGet(request) {
   var response = UrlFetchApp.fetch("https://api.waqi.info/feed/changzhou/?token=你的token");
   var data = JSON.parse(response.getContentText());
   var feed = '<?xml version="1.0" encoding="utf-8" ?>'+'<rss version="2.0">'
   +'<channel>'+'<title>AQI常州超标数值</title>'+'<link>http://aqicn.org/here/</link>';
   Logger.log(data.data.aqi)
   if (data.data.aqi > 150){
     feed += '<item>'+'<title>'+'aqi '+data.data.aqi+'</title>'+'<link>'+data.data.city.url+'</link>'+'</item>';
     feed += '</channel></rss>';
   }
   return ContentService.createTextOutput(feed).setMimeType(ContentService.MimeType.RSS);
}

这里用的是常州做的测试,AQI>150 的时候 rss 才更新,可以自行调整数值。

怎么提醒自己合适呢?

IFTTT 满足你的一切需求,短信、邮件、Telegram,我相信这些已经足够让人满意了。

2017.03.18更新:最近发现有个 微信推送 很实用,所以就不用生成 rss 那么麻烦了,超标以后直接微信推送提醒自己。

function doGet(request) {
   var response = UrlFetchApp.fetch("https://api.waqi.info/feed/changzhou/?token=你的token");
   var data = JSON.parse(response.getContentText());
   if (data.data.aqi > 150){
     UrlFetchApp.fetch("http://sc.ftqq.com/你的另一个token.send"+"?text="+encodeURI("今天空气超标:")+data.data.aqi+"&desp="+data.data.city.url);
   }
   Logger.log(data.data.aqi);
}