Accuweather
Get weather information for cities around the world using the accuweather API. Includes temperature, pressure, humidity, weather text and GPS coordinates.
Installation
Add this line to your application's Gemfile:
gem 'accuweather'
And then execute:
$ bundle
Or install it yourself as:
$ gem install accuweather
Usage
Search for an accuweather location:
location_array = Accuweather.city_search(name: 'vancouver')
vancouver = location_array.first
vancouver.id # => 'cityId:53286'
vancouver.city # => 'Vancouver'
vancouver.state # => 'Canada (British Columbia)'
vancouver.latitude # => '49.2448'
vancouver.longitude # => '123.1154'
Search for weather conditions for a given location id:
current_weather = Accuweather.get_conditions(location_id: 'cityId:53286').current
current_weather.temperature # => '41'
current_weather.weather_text # => 'Partly Sunny'
current_weather.pressure # => '30.35'
current_weather.humidity # => '43%'
current_weather.cloud_cover # => '40%'
Get forecast details:
weather_forecast = Accuweather.get_conditions(location_id: 'cityId:53286').forecast
last_forecast_day = weather_forecast.last
last_forecast_day.date # => "12/3/2015"
last_forecast_day.day_of_week # => "Thursday"
last_forecast_day.sunrise # => "7:49 AM"
last_forecast_day.sunset # => "4:16 PM"
# Get the dates, daytime high and nighttime low temperatures
weather_forecast.map(&:date) # => ["11/27/2015", "11/28/2015", "11/29/2015", "11/30/2015", "12/1/2015", "12/2/2015", "12/3/2015"]
weather_forecast.map(&:daytime).map(&:high_temperature) # => ["45", "45", "47", "44", "44", "48", "48"]
weather_forecast.map(&:nighttime).map(&:low_temperature) # => ["27", "28", "31", "32", "40", "42", "36"]
Here is a full list of attributes for daytime and nighttime forecasts:
weather_text
,weather_text_long
,weather_icon
,high_temperature
,low_temperature
,real_feel_high
,real_feel_low
,wind_speed
,wind_direction
,wind_gust
,max_uv
,rain_amount
,snow_amount
,ice_amount
,precipitation_amount
,thunderstorm_probability
,rain_probability
,snow_probability
,ice_probability
and precipitation_probability
Get the units for the conditions:
units = Accuweather.get_conditions(location_id: 'cityId:53286').units
units.temperature # => 'F'
units.distance # => 'MI'
units.speed # => 'MPH'
Get more information on the location including time and time zone:
local = Accuweather.get_conditions(location_id: 'cityId:53286').local
local.time # => '13:41'
local.time_zone # => '-8'
local.time_zone_abbreviation # => 'PST'
Imperial units are returned by default, but metric results are available:
Accuweather.get_conditions(location_id: 'cityId:53286', metric: true)
Each Accuweather::Conditions
object implements a to_s
method that displays all attribute
name, value pairs. This makes it easy to explore the API. For example:
Accuweather.get_conditions(location_id: 'cityId:53286').local.to_s
# => "city: Vancouver, state: British Columbia, latitude: 49.2448, longitude: -123.1154, time: 16:58, time_zone: -8, obs_daylight: 0, current_gmt_offset: -8, time_zone_abbreviation: PST"
Development
Run rake
to run the tests
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/accuweather.