kisyo.py
気象情報システムからデータを取得してcosmにPUTする。
#!/usr/bin/env python # coding:utf-8 # kisyo.py 2012.9.30 import logging import webapp2 from google.appengine.api import urlfetch from xml.dom import minidom from collections import OrderedDict kisyo_url = "http://.jp/kisyo/data_xml/present_001.xml" #←設定する feed_id = "123456" #←設定する apikey = "1234567890abcdefghijk" #←設定する api_url = "http://api.cosm.com" def w2dir(s): dict = { u"北北東" : "01", u"北東" : "02", u"東北東" : "03", u"東" : "04", u"東南東" : "05", u"南東" : "06", u"南南東" : "07", u"南" : "08", u"南南西" : "09", u"南西" : "10", u"西南西" : "11", u"西" : "12", u"西北西" : "13", u"北西" : "14", u"北北西" : "15", u"北" : "16" } if s in dict: return dict[s] return s class MainHandler(webapp2.RequestHandler): def get(self): result = urlfetch.fetch(kisyo_url) logging.info("%s %d" % (kisyo_url, result.status_code)) if result.status_code != 200: self.response.out.write("status_code: %d" % result.status_code) return #logging.info(result.content) dom = minidom.parseString(result.content) dataset = OrderedDict() for data in dom.getElementsByTagName('dataset'): fld_id = data.getAttribute('fld_id') value = data.getAttribute('value') #logging.info("%s %s" % (fld_id, value)) dataset[fld_id] = w2dir(value) #logging.info(dataset) keys = ['avg_ws', 'avg_wd', 'max_ws', 'max_wd', 'temp', 'humid1', 'humid2', 'press1', 'press2', 'rain_10min' ] payload = "" for k in keys: payload += "%s,%s\n" % (k, dataset[k]) url = "%s/v2/feeds/%s.csv?_method=put" % (api_url, feed_id) headers={'X-ApiKey': apikey} result = urlfetch.fetch(url, payload, urlfetch.POST, headers) self.response.out.write("status_code: %d" % result.status_code) app = webapp2.WSGIApplication([ ('/cron/kisyo.*', MainHandler) ], debug=True)