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


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にしてます。