AppleScript : weather hacks で天気予報 - GameSpritで、Weather Hacks の天気予報API を試しました。
これを改良して、今日と明日の天気予報をまとめて確認してみます。
結果として、ダイアログ表示は次のようになります。
同じデータをクリップボードに出力しています。
このデータをこのブログに貼り付けると、次のようになります。
さて、実際のスクリプトを書いてみます。
エンジン部分の改良です。
今日と明日の天気予報データを取得するとともに、今日と明日の最高気温と最低気温のデータ項目を加えました。
この最高気温と最低気温のデータ項目が nil のときにエラーが発生するのをやっつけ対処しています。
うーん、AppleScript というよりも、ruby に頼るところが大ですね。
まとめてみました。ここでは、Weather Hacks の city タグは「81」で決め打ちしています。
末尾に</font>が表示されている場合は、無視してください。
キーワード:AppleScript、 Weather Hacks、天気予報、デリミタ、シティタグ、都市名、ruby、rubyスクリプト、do shell script、最高気温、最低気温
これを改良して、今日と明日の天気予報をまとめて確認してみます。
結果として、ダイアログ表示は次のようになります。
同じデータをクリップボードに出力しています。
このデータをこのブログに貼り付けると、次のようになります。
大阪府 大阪 - 今日の天気
晴れ
最高気温:
最低気温:
大阪府 大阪 - 明日の天気
晴のち雨
最高気温: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、天気予報、デリミタ、シティタグ、都市名、ruby、rubyスクリプト、do shell script、最高気温、最低気温