Posted at

天気予報を取得するスクリプト

More than 5 years have passed since last update.


tmuxのstatuslineに天気予報を表示したいなと思って作ったスクリプトです。

google先生のWeather APIを使って取得して表示するだけのスクリプト

天気が良い日はすぐに海に行けるようになって幸せが実現しました。

参考にしました。


weather.rb

require 'open-uri'

require 'rexml/document'

CACHE = "/tmp/ustatus.rb.cache"

if File.exist?(CACHE) && (Time.now - File::Stat.new(CACHE).mtime) <= 2000
print File.read(CACHE)
exit
end

url = URI.parse('http://www.google.com/ig/api?weather=naha,okinawa&hl=ja')
res = url.read('r:binary').encode("UTF-8", invalid: :replace, undef: :replace)
rss = REXML::Document.new(res)

condition = rss.elements['//weather/current_conditions/condition/@data'].value.strip
wind_condition = rss.elements['//weather/current_conditions/wind_condition/@data'].value.strip
wind, windy, tani = *wind_condition.split(':').last.split(' ')
temp_c = rss.elements['//weather/current_conditions/temp_c/@data'].value.strip + 'C'
msg = [condition, temp_c, wind, windy + tani].join(' ')

if msg.nil?
File.delete CACHE
else
open(CACHE, 'w'){|io| io.print msg}
print msg
end



  • 沖縄/那覇の天気予報を日本語で取ってきます。

  • 天気予報は30分に一回更新だったと思うのでキャッシュ時間を2000sにしました。(適当)

  • なんとなくREXMLを使っています。



  • 温度の単位は℃を使うとstatuslineが崩れたのでCにしてます。