如今愈來愈多的 App 都開始有廣告了。特別是空氣質量監測,和天氣類的 App,廣告仍是蠻多的,眼花繚亂,真是夠了。html
最近恰好在用一款系統監控工具 Cloud Insight,它提供的 SDK 能夠把任一數據上傳到他們那作展現。python
靈機一動,做爲一個程序員,本身動手豐衣足食,沒什麼不能解決的。程序員
pip install -i http://pypi.oneapm.com/simple --upgrade oneapm-ci-sdk
這就安裝好了。json
簡單用 ipython 看了看接口文檔, gauge 是主要的發數據的接口,好像 increment 也能夠,可是不懂是搞啥的,貌似數據類型不同。工具
首先得找一個 PM 2.5 API,參考了一下這個教程:Air Quality Widget - New Improved Feed。裏面的資料顯示,美國駐京使館也用的是這裏的數據,應該還算準確吧。網站
注意看教程裏,他們請求的地址爲:spa
http://feed.aqicn.org/feed/beijing/en/feed.v1.json
請求這個地址,就能夠獲得數據啦。code
說到這個,其實國內不少 App 和網站都在用 PM25.in。用的人挺多的,就是發郵件速度有點慢,註冊以後獲取 Token 的郵件一直都沒發給我!htm
先介紹下 Cloud Insight 吧,就是一款系統監控工具,支持 Ubuntu、MySQL、Docker 的監控。可是他們提供 SDK 能夠自定義上傳數據,因此咱們就用它來承接 PM 2.5 的數據吧。教程
他們也提供任一指標的報警功能,因此也能夠經過設置報警,來發郵件提醒給我。
Cloud Insight SDK 和 StatsD 原理很像,SDK 的詳情能夠參考文檔。
源代碼以下:
import requests from oneapm_ci_sdk import statsd PM25_API_URL = "http://feed.aqicn.org/feed/%s/en/feed.v1.json" def get_city_data(city): try: res = requests.get(PM25_API_URL % city) except: return 0 else: return res.json()['aqi']['val'] def using_sdk(): statsd.gauge('airquality.beijing.pm25', float(get_city_data('beijing'))) statsd.gauge('airquality.shanghai.pm25', float(get_city_data('shanghai'))) statsd.gauge('airquality.guangzhou.pm25', float(get_city_data('guangzhou'))) statsd.gauge('airquality.xuchang.pm25', float(get_city_data('xuchang'))) # 家裏。。 if __name__ == '__main__': using_sdk()
首先經過 API 把數值取出來,而後經過 stats.gauge
對指標進行賦值,就能夠了。呼~接下來是產品內部的使用了。
啦啦啦~自定義儀表盤開個 Air Quaility 儀表盤,數據選進來,就能夠看各個城市的 PM 2.5 的實時數值了。
想隨時隨地知道北京空氣質量是否超標,卻又不想下載廣告一大堆的空氣質量 App。那我本身動手設一個報警策略吧。
大於或等於 100,就算超標好了。很簡單就設置完成了。
大功告成,等着郵件提醒吧。順便秀一下 Kickstarter 買來的 Pebble 手錶。舒心啊:沒有廣告的北京空氣質量監測。
本文參考一篇帖子 pm25,關愛老大,徵求原做者贊成後改寫。