GameSprit

自転車やMac・AppleScript、映画・小説やドラマのレビュー、備忘メモ・クイズなどを置いています。

AppleScript : Weather Hacks で今日・明日の天気予報

2012-10-21 23:43:42 | AppleScript
AppleScript : weather hacks で天気予報 - GameSpritで、Weather Hacks の天気予報API を試しました。

これを改良して、今日と明日の天気予報をまとめて確認してみます。
結果として、ダイアログ表示は次のようになります。




同じデータをクリップボードに出力しています。
このデータをこのブログに貼り付けると、次のようになります。
大阪府 大阪 - 今日の天気
晴れ

最高気温:
最低気温:



大阪府 大阪 - 明日の天気
晴のち雨

最高気温:26
最低気温:14


大阪府では、明日昼過ぎから強風や高波のおそれがあります。

近畿地方は、九州に中心をもつ高気圧に覆われて晴れています。
今夜の近畿地方は、引き続き高気圧...



さて、実際のスクリプトを書いてみます。
エンジン部分の改良です。

今日と明日の天気予報データを取得するとともに、今日と明日の最高気温と最低気温のデータ項目を加えました。
この最高気温と最低気温のデータ項目が nil のときにエラーが発生するのをやっつけ対処しています。

うーん、AppleScript というよりも、ruby に頼るところが大ですね。
まとめてみました。ここでは、Weather Hacks の city タグは「81」で決め打ちしています。
set msg to my getForecast("81")

set the clipboard to (msg as text)
display dialog msg



on getForecast(cityNr)

"require 'open-uri'
require 'rexml/document'

# 変数宣言
xmlData = 0
weatherData = 0

open(\"http://weather.livedoor.com/forecast/webservice/rest/v1?city="

set rsor1 to quoted form of result


"&day=today\") {|f|
xmlData = f.read
}



# xml から天気データを取得
weatherData = REXML::Document.new(xmlData)

weathers = Array.new
weathers << weatherData.elements[\"/lwws/title\"].text
weathers << \"<img src=\" + weatherData.elements[\"/lwws/image/url\"].text + \">\" + weatherData.elements[\"/lwws/telop\"].text
weathers << \"\"
weathers << \"最高気温:\" + weatherData.elements[\"/lwws/temperature/max/celsius\"].text.to_s
weathers << \"最低気温:\" + weatherData.elements[\"/lwws/temperature/min/celsius\"].text.to_s
weathers << \"\"
#weathers << weatherData.elements[\"/lwws/description\"].text
#weathers << \"<img src=\" + weatherData.elements[\"/lwws/image/url\"].text + \">\"

puts weathers
puts \"\"
puts \"\"

# 変数宣言
xmlDatan = 0
weatherDatan = 0

open(\"http://weather.livedoor.com/forecast/webservice/rest/v1?city="

set rsor2 to quoted form of result


"&day=tomorrow\") {|f|
xmlDatan = f.read
}



# xml から天気データを取得
weatherDatan = REXML::Document.new(xmlDatan)

weathersn = Array.new
weathersn << weatherDatan.elements[\"/lwws/title\"].text
weathersn << \"<img src=\" + weatherDatan.elements[\"/lwws/image/url\"].text + \">\" + weatherDatan.elements[\"/lwws/telop\"].text
#weathersn << weatherDatan.elements[\"/lwws/description\"].text
weathersn << \"\"
weathersn << \"最高気温:\" + weatherDatan.elements[\"/lwws/temperature/max/celsius\"].text.to_s
weathersn << \"最低気温:\" + weatherDatan.elements[\"/lwws/temperature/min/celsius\"].text.to_s
weathersn << \"\"
#weathersn << weatherDatan.elements[\"/lwws/image/url\"].text
weathersn << \"\"
weathersn << weatherDatan.elements[\"/lwws/description\"].text

puts weathersn"

set rsor3 to quoted form of result


return do shell script "/usr/bin/ruby -e " & rsor1 & cityNr & rsor2 & cityNr & rsor3

end getForecast</font>

末尾に</font>が表示されている場合は、無視してください。




キーワード:AppleScript Weather Hacks天気予報デリミタシティタグ都市名rubyrubyスクリプトdo shell script最高気温最低気温

最新の画像もっと見る

post a comment

ブログ作成者から承認されるまでコメントは反映されません。