Skip to content

kpanic/forecastr

Repository files navigation

Forecastr Build Status Package Version License

Forecastr is an open source Weather API wrapper for OpenWeatherMap and DarkSky 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