
Weather reports with curl - theptrk
http://theptrk.com/2018/07/08/weather-reports-with-curl/
======
ternaryoperator
> curl is a program that is included in your Mac OSX distribution used for
> transferring data from or to a server.

For newbies who might be misled, cURL is available on a ridiculous number of
platforms[1]

[1] [https://curl.haxx.se/download.html](https://curl.haxx.se/download.html)

~~~
theptrk
^ definitely right, I kind of write my blog as a peripheral extension of my
brain so I forget there are other computers.

------
gkya
Nice! The [http://wttr.in](http://wttr.in) website shows a nice report too.

If you use emacs, I've made this [1][2] which gets its data from DarkSky.net.

[1]
[https://github.com/cadadr/elisp/blob/master/forecast.el](https://github.com/cadadr/elisp/blob/master/forecast.el)

[2]
[https://raw.githubusercontent.com/cadadr/elisp/master/foreca...](https://raw.githubusercontent.com/cadadr/elisp/master/forecast.el.png)

~~~
theptrk
yeah interestingly enough, `wttr.in` uses `wego` which (according to their
github) uses `forecast.io` as the default weather service, but if you click on
the link, it forwards you to `darksky.net`. So you've built your own wttr.in

~~~
igor_chubin
wttr.in uses its own version of "wego" with many additional features, forked
from wego several years ago. Actually, it would be better to say, that wttr.in
uses only artwork from "wego".

~~~
theptrk
thanks for making wttr igor! sorry about rate limiting this post might have
caused, which api does wttr.in use? I think I'll write about setting up your
own weather service api account next.

------
samcheng
My favorite text-based weather report is definitely the "discussion" product
from the National Weather Service. It gives some perspective, instead of just
the numbers. Importantly, it commonly has a discussion of forecast
confidence/uncertainty.

If you read it long enough, you'll start to pick up some of the 'why' in the
weather.

Here's an example:

[https://forecast.weather.gov/product.php?site=NWS&issuedby=M...](https://forecast.weather.gov/product.php?site=NWS&issuedby=MTR&product=AFD&format=CI&version=1&glossary=1)

I suppose you could curl it...

~~~
craftyguy
How stable is the output here? I noticed sections are delimited by '&&', and
start with '.<SECTION TITLE>...'.

If it's stable, then it might be fun to write a cli client to query/display
this..

~~~
aftbit
Five minutes in python3 + requests:

    
    
      #!/usr/bin/python
      import requests
      import re
      
      SHOW_GROUPS = ['SYNOPSIS', 'DISCUSSION', 'MTR WATCHES/WARNINGS/ADVISORIES']
      CITY = 'MTR'
      
      txt = requests.get('https://forecast.weather.gov/product.php?site=NWS&issuedby='+CITY+'&product=AFD&format=txt&version=1&glossary=0', timeout=30).text
      
      m = re.search(r'(?mis)<pre class="glossaryProduct">(.*)</pre>', txt)
      groups = m.group(1).split('&&\n')
      for g in groups:
          m = re.search(r'\.(.*?)\.\.\.', g)
          if m and m.group(1) in SHOW_GROUPS:
              print(g.strip()+'\n')

~~~
craftyguy
Yep, not hard if the input is somewhat stable...

------
moreentropy
Video of wttr.in author's short talk about console oriented services at
CCC/entropia's GPN18 conference two months ago:

[https://media.ccc.de/v/gpn18-164-using-and-creating-
console-...](https://media.ccc.de/v/gpn18-164-using-and-creating-console-
oriented-services-such-as-wttr-in-cheat-sh-rate-sx-etc-)

~~~
Bromskloss
What's going on with the terminal resizing there? Is someone else controlling
it?

------
yakshaving_jgt
Nice. You can also get a little weather indicator based on your IP address in
your tmux status bar. Sorry to push my own stuff, but many people have enjoyed
this:

[https://jezenthomas.com/showing-the-weather-in-
tmux/](https://jezenthomas.com/showing-the-weather-in-tmux/)

------
andreineculau
Alternative: finger and the Norwegian weather service YR -
[https://github.com/ways/pyyrascii](https://github.com/ways/pyyrascii)

~~~
Symbiote
YR essentially request that only users from Norway/Scandinavia use the
service.

[https://om.yr.no/info/verdata/free-weather-
data/](https://om.yr.no/info/verdata/free-weather-data/)

------
bionoid
If you are delivering software or hardware products that include weather
forecast, do not rely on anyone else's API directly. Build a wrapper service
and direct your clients there.

As a particularly disasterous example, the Yahoo Weather API was unchanged for
the longest time. Integrators worldwide deployed thousands - no probably
millions - of systems using an unofficial "Yahoo Weather Module". It was the
canonical solution.

Then they made a breaking change to the API and everyone cried.

------
craftyguy
On zsh, I had to surround the url in quotes since it (zsh) kept trying to
handle the '?'

------
Fnoord
I like it (the usage of ascii chars to draw the weather, the usage of arrow
for wind direction, the articulation on temperate with color)

The geolocation is off (as usual) because it uses the same DB as ipleak.net
and others which is wrong for my (semi static) cable IPv4. I don't mind
though, I just add some city.

It doesn't show well in a standard 80x25 terminal either, and that I do mind.
That's my main issue with it.

So I ended up with:

n=0 ; while (( $n <= 72 )) ; date ; do curl wttr.in/~Amsterdam?0 ; sleep 1200
; n=$(( n+1 )) ; done

Which grabs the weather every 20 min for 24 hours straight after which it has
to be restarted. Not sure how it deals with laptop's suspend though.

watch -cn 1200 didn't work for me because while it does parse the ascii
colors, it doesn't show them.

Since that hammers the servers though I'd write an alias for
wttr.in/~Amsterdam?0 such as 'gcw' ("get current weather") or something like
that.

Anyway, instead of having a dedicated terminal for this open (e.g. in Tmux)
its probably better to queue for this every X minutes in Tmux statusbar as
someone else suggested.

For now though I just use the KNMI application on Android though which gives a
notification in the morning and evening about the weather (the evening one
also describing the forecast for next day). Its basically as if watching the
weather forecast on TV. I get the notification on my smartwatch as well
(Pebble 2).

Also, this doesn't beat Android's Buienalarm push notification service which
alerts you right before it is going to rain on current location plus locations
you specified (home, work, family, etc)

~~~
BurnGpuBurn
To create the last bit you could use the Buienradar radar service at
[https://gps.buienradar.nl/getrr.php?lat=xx.xx&lon=yy.yy](https://gps.buienradar.nl/getrr.php?lat=xx.xx&lon=yy.yy)
which is updated every five minutes and returns a table with precipitation
predictions for the next two hours. To calculate how much it'll rain precisely
use the formula 10^((value-109)/32) on the first column to get to mm/h (eg a
value of 77 is equal to 0.1mm/h.) I assume this is just a couple of radars or
perhaps just one in The Netherlands.

------
danso
Given that `curl` was initially created to make it easier to fetch currency
rates for IRC, seems very apt for users to learn to use it for everyday things
like checking the weather

[https://youtu.be/Lq2ksox21Eg?t=6m11s](https://youtu.be/Lq2ksox21Eg?t=6m11s)

------
emwjacobson
Calling it on its own always returns the weather for Ottawa. Id expect it to
use the requesting IP's location at the least. Using wttr.in/~LosAngeles
returns the weather for "Rua Professora Maria Losângeles Navarro", a street in
Brazil.

~~~
sudosushi
Mine returned Oymyakon, Russia. Nearly 8,000km from my location, or IP address
geoloc. I'm assuming it's possibly picking up some hop in between, maybe?

~~~
jedberg
Mine too, but at the very bottom, it says "We were unable to find your
location so we have brought you to Oymyakon, one of the coldest permanently
inhabited locales on the planet."

------
hyperpallium
Very nice. But can't you adjust column width for mobile terminals.

docs:
[https://github.com/chubin/wttr.in/blob/master/README.md](https://github.com/chubin/wttr.in/blob/master/README.md)

------
mongol
Nice. But wind speed when expressed in SI units are more often expressed as
m/s rather than km/h.

------
Bromskloss
> Notice that wttr is returning ASCII characters.

The wind arrows are not ASCII. Not that I have any trouble with that.

~~~
theptrk
Update. Thanks!

------
theptrk
oh no I think we maxed out the API calls. "Sorry, we are running out of
queries to the weather service at the moment. Here is the weather report for
the default city (just to show you, how it looks like). We will get new
queries as soon as possible."

------
swanlyk
Can anyone suggest any other good curl-able datasets for other domain areas?

~~~
theptrk
The author also created “rate.sx” for bitcoin prices

------
charleyma
Love simple services that do exactly what you would expect

~~~
fastbmk
Then try [http://fastbmk.com/](http://fastbmk.com/)

~~~
icebraining
You should say "free for now" or "free during beta". "Free, no ads and no data
collection" just make me wary.

------
Jaruzel
I have curl installed on Windows 10... this is what I got:

[https://imgur.com/xOAUhOU](https://imgur.com/xOAUhOU)

Well done Windows, well done. ;)

 _(Yes, I know why it looks crap)_

------
fergie
Wow- the thunder animation is pretty cool

~~~
Bromskloss
Where do you see that?

------
rmbeard
Worked beautifully for me. Love it.

