livedoorのお天気APIをGroovyで使ってみた
livedoorがお天気APIを公開していたので、Groovyから使ってみた。
APIの詳細はここを参照。
以下のGroovyスクリプトを実行すると、名古屋の今日、明日、あさっての天気がお手軽に取得できます。
2009-01-25現在、なぜか温度は取れなかったので、今後対応するのかな?
(動作確認: Groovy Version: 1.5.7 JVM: 1.6.0_10)
// Thanks to http://weather.livedoor.com/weather_hacks/webservice.html // cityの確認は→ http://weather.livedoor.com/weather_hacks/rss_feed_list.html API_DATE_FORMAT = new java.text.SimpleDateFormat('EEE, d MMM yyyy HH:mm:ss Z', Locale.US) OUT_DATE_FORMAT = new java.text.SimpleDateFormat('yyyy-MM-dd(E)') def base = 'http://weather.livedoor.com/forecast/webservice/rest/v1' def city = '38' // 名古屋 def days = ['today', 'tomorrow', 'dayaftertomorrow'] // 今日, 明日, あさって days.each{ day -> def param = "city=${city}&day=${day}" def url = "${base}?${param}" def result = new XmlParser().parse(url) output(result) // outputWithDescription(result) } /** 出力 */ def output(result){ def date = OUT_DATE_FORMAT.format(API_DATE_FORMAT.parse(result.forecastdate.first().text())) println "●${date} ${result.title.text()} [${result.telop.text()}]" } /** 出力(詳細付き) */ def outputWithDescription(result){ println """\ ●${result.title.text()} [${result.telop.text()}] ${result.description.text()} """ }
出力結果
●2009-01-25(日) 愛知県 名古屋 - 今日の天気 [晴れ]
●2009-01-26(月) 愛知県 名古屋 - 明日の天気 [晴れ]
●2009-01-27(火) 愛知県 名古屋 - あさっての天気 [晴時々曇]