Skip to content

bonfire-networks/forecastr

 
 

Repository files navigation

Forecastr Build Status Package Version License

Forecastr is an open source Weather API wrapper for OpenWeatherMap and PirateWeather API.

Forecastr is an Elixir flavour of http://wttr.in that talks directly to one of the aforementioned weather services.

Aim of the project is to provide a website similar to wttr.in written entirely in elixir

Project status: beta

Installation

The package can be installed by adding forecastr to your list of dependencies in mix.exs:

def deps do
  [
    {:forecastr, "~> 0.3"}
  ]
end

The documentation can be found at https://hexdocs.pm/forecastr.

NOTE If you want to play with this project you have to obtain an api key from http://openweathermap.org/ or https://darksky.net/ and:

export FORECASTR_API_KEY=YOUR_API_KEY

Also put in your config/config.exs

config :forecastr,
  appid: System.get_env("FORECASTR_API_KEY"),
  backend: Forecastr.OWM,
  # 10 minutes by default
  ttl: 10 * 60_000

If you want to use the DarkSky API put backend: Forecastr.Darksky

Samples of output for today's forecast:

Forecastr.forecast(:today, "lima")

today berlin

Sample output with the OWM backend (the number of days is different depending on the backend used):

Forecastr.forecast(:next_days, "lima")

in 5 days

"All the ducks are swimming in the water Fal de ral de ral do" (Lemon Jelly cit.)

duck with sunglasses

If you want gifs back with your weather forecast from Giphy call the giphy renderer:

iex> Forecastr.forecast(:today, "berlin", units: :metric, renderer: Forecastr.Renderer.Giphy)
{:ok,
 %{
   "coordinates" => %{"lat" => 52.5170365, "lon" => 13.3888599},
   "country" => "Deutschland",
   "description" => "Mostly Cloudy",
   "giphy_pic" => "https://i.giphy.com/media/XqL0uC2RUx9Hq/200.gif",
   "id" => "partly-cloudy-day",
   "name" => "Berlin",
   "temp" => 9.77,
   "temp_max" => 9.77,
   "temp_min" => 9.77
 }}

This works also by calling Forecastr.forecast with the :next_days atom to get the weather forecast for the next days.

TODO

  • Travis
  • JSON renderer
  • PNG Renderer with transparency (it's there but needs some love)
  • Integrate https://forecast.io (now DarkSky) as a backend.
  • Giphy renderer
  • Tests! (some coverage, good enough for now ™, however if someone feels like to add more.. ;))
  • Correct ASCII Art for the renderers that supports that (In progress)

Thank yous

About

Forecastr, the Elixir way to check the weather forecast

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 100.0%