Skip to content

Instantly share code, notes, and snippets.

@lorenzosinisi
Last active November 21, 2022 19:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lorenzosinisi/4ce052375d1ae8f9111762391d57f5e6 to your computer and use it in GitHub Desktop.
Save lorenzosinisi/4ce052375d1ae8f9111762391d57f5e6 to your computer and use it in GitHub Desktop.
Mix.install([
{:req, "~> 0.2"},
{:timex, "~> 3.7"},
{:nimble_csv, "~> 1.1"}
])
IO.puts("""
\n
""")
time = DateTime.utc_now()
month_number = time.month
year = time.year
mese =
Timex.format!(time, "{Mfull}")
|> then(fn month ->
Timex.Translator.translate("it", "months", month)
end)
quindicina =
case Timex.format!(time, "{D}") |> Integer.parse() do
number when number > 14 -> "II"
number when number > 0 -> "I"
end
response =
if month_number in [6, 7, 8, 9] do
resp =
"https://cloud.arpa.puglia.it/MappaAlgaTossica/data/#{mese}#{quindicina}-#{year}.csv"
|> IO.inspect(label: "Fonte")
|> Req.get!()
resp.body
else
IO.puts("Ultima lettura per il #{year} - Settembre II")
resp =
"https://cloud.arpa.puglia.it/MappaAlgaTossica/data/SettembreII-#{year}.csv"
|> IO.inspect(label: "Fonte")
|> Req.get!()
resp.body
end
risk = fn value ->
{val, _} = Integer.parse(value)
cond do
val == 0 ->
:assente
val > 20000 ->
:molto_abbondate
val > 10001 ->
:abbondate
val > 5001 ->
:discreta
val > 1001 ->
:modesta
val > 0 ->
:scarsa
end
end
IO.puts("""
\n\n\
Posti in cui è stata rilevata la presenza di alga tossica \n(Ostreopsis ovata)
""")
response
|> List.delete_at(0)
|> Enum.map(fn row ->
[_city, location, name, _date, value, _] = List.first(row) |> String.split(";")
label = risk.(value)
if label in [:molto_abbondate, :abbondate, :discreta, :modesta] do
IO.puts(
"- #{[location, name] |> Enum.join(", ")} " <>
IO.ANSI.red_background() <>
"Alga Tossica" <>
IO.ANSI.reset() <> ""
)
else
IO.puts("- #{[location] |> Enum.join(", ")} " <> "💦 (sicuro)")
end
end)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment