天気

天気情報を使いたかったので、グーグルの天気APIを使うGAE用のpythonクラスを作った。素人が作っているので適当。
海外のサイトでグーグルの社員さんが答えているのをみると、このAPIは公式APIではないので、自己責任で使ってみたいに書いてあった。

以下クラス。とりあえず近況の天気と、温度だけ取れるようにした。天気に関する英単語の日本語訳は自信ない。天気情況の単語は把握できた分は全部載せたけど、まだ他にもありそうな予感。キャッシュはmemcacheを使い15分間保存。
[python]
#coding: utf-8
from xml.etree.ElementTree import XML, ElementTree, Element
import urllib
import urllib2

from google.appengine.api import memcache

class Gweather:
def __init__(self, name):
self.cityname = name

def search_wether_ja(self):
wxml = self.get_greetings()
dom = wxml
dom = dom.getroot()
dom = dom.find(“weather/current_conditions/condition”)
dom = dom.get(“data”)
wether_list = {“Clear”:”晴れ”,”Sunny”:”晴れ”,”Overcast”:”くもり”,”Heavy Rain”:”大雨”,”Light rain”:”小雨”,”Rain Showers”:”にわか雨”,”Showers”:”にわか雨”,”Mostly_Sunny”:”ほぼ晴れ”,”Partly Cloudy”:”晴れときどき曇”,”Mostly Cloudy”:”ほぼ曇”,”Chance_of_Storm”:”嵐のおそれ”,”Rain”:”雨”,”Chance_of_Rain”:”雨のおそれ”,”Cloudy”:”くもり”,”Mist”:”霧”,”Storm”:”嵐”,”Thunderstorm”:”雷雨”,”Chance_of_Tstorm”:”雷雨のおそれ”,”Sleet”:”みぞれ”,”Snow”:”雪”,”Icy”:”氷”,”Dust”:”ダスト”,”Fog”:”霧”,”Smoke”:”スモーク”,”Haze”:”もや”,”Flurries”:”突風”}
weatherkey = wether_list.get(dom,””)
return weatherkey

def search_temp(self):
wxml = self.get_greetings()
dom = wxml
dom = dom.getroot()
dom = dom.find(“weather/current_conditions/temp_c”)
dom = dom.get(“data”)
return dom

def get_greetings(self):
greetings = memcache.get(self.cityname)
if greetings is not None:
return greetings
else:
greetings = self.render_greetings()
if not memcache.add(self.cityname, greetings, 900):
logging.error(“Memcache set failed.”)
return greetings

def render_greetings(self):
url2 = “http://www.google.com/ig/api?weather=”+self.cityname
xml = ElementTree(file=urllib2.urlopen(url2))
return xml

[/python]

以下、実際に使う場合。Gweather(“ここに地名を英語で入れる”)。以下はロンドンの場合。
[python]
from gweather import Gweather

try:
dom_london = Gweather(“london”)
london_weather = dom_london.search_wether_ja()
londontemp = dom_london.search_temp()
except:
london_weather =””
londontemp = “”
[/python]

ちなみにAPIで帰ってくるXMLは以下。かなり詳細な情報が得られる。地名も細かい指定ができる。
[xml]















































[/xml]

pythonは、0から始める人向けの【Pythonスタートブック】をまず2,3日でやって、あとは、【みんなのPython 改訂版】で必要な物だけ、芋づる式に調べて使ってます。1冊目で全体像を頭に入れて、2冊目を逆引きに使う感じ。この2冊はかなり役に立ちました。

コメントを残す