require "yahoo-weather" require "mechanize" class WeatherInPoland attr_reader :city attr_reader :code attr_reader :image attr_reader :thumb attr_reader :wind_direction def find_city(name='Gdynia') agent = Mechanize.new page = agent.get("http://weather.yahoo.com/poland/") form = page.form('pform') form.fields.find {|f| f.name == 'location'}.value = name page = agent.submit(form) url = page.uri.to_s near_city = page.parser.xpath('//div[@id="yw-nearstation"]/text()').to_s if near_city.empty? return false else @city = near_city.split(':').last.split(',').first.strip @code = url.split('-').last.to_i return true end end def get_weather(code) client = YahooWeather::Client.new response = client.lookup_by_woeid(code, YahooWeather::Units::CELSIUS) return response end def get_wind_direction(data) wind = data.wind.direction if (wind>338) @wind_direction = "N" elsif (wind==0 && wind<24) @wind_direction = "N" elsif (wind>=24 && wind<69) @wind_direction = "NE" elsif (wind>=69 && wind<114) @wind_direction = "E" elsif (wind>=114 && wind<186) @wind_direction = "SE" elsif (wind>=186 && wind<204) @wind_direction = "S" elsif (wind>=204 && wind<249) @wind_direction = "SW" elsif (wind>=249 && wind<294) @wind_direction = "W" elsif (wind>=294 && wind<338) @wind_direction = "NW" else @wind_direction = "" end end def get_image(dane) sun_rise = dane.astronomy.sunrise sun_set = dane.astronomy.sunset if sun_rise.past? && sun_set.future? time_of_day = 'd'; else time_of_day = 'n'; end @thumb = "http://l.yimg.com/a/i/us/nws/weather/gr/#{dane.condition.code.to_s+time_of_day}s.png" @image = "http://l.yimg.com/a/i/us/nws/weather/gr/#{dane.condition.code.to_s+time_of_day}.png" end end