Hacker News new | comments | ask | show | jobs | submit login
Weather reports with curl (theptrk.com)
89 points by theptrk 7 months ago | hide | past | web | favorite | 48 comments

> 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

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

Nice! The 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

[2] https://raw.githubusercontent.com/cadadr/elisp/master/foreca...

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

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".

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.

DarkSky was forecast.io when I wrote forecast.el, they renamed.

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:


I suppose you could curl it...

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..

Five minutes in python3 + requests:

  import requests
  import re
  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:

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

Probably quite stable; this stuff dates back to the telegraph...


That does not mention that the format of 'discussions' has been stable since the telegraph.. which is what I was asking about. Not the history of the NWS.

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


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

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:


Alternative: finger and the Norwegian weather service YR - https://github.com/ways/pyyrascii

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


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.

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

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)

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 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.

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


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.

You're looking for `http://wttr.in/Los%20Angeles`

It gives me the weather for "Italy, United States of America". So having got the country of Italy from the geolocation, it must then be doing a US-centric text search for the location.

The weather report is nice but doesn't work too well with rxvt-unicode or with a light-coloured background.

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?

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."

There's an explanation below the weather table:

> We were unable to find your location so we have brought you to Oymyakon, one of the coldest permanently inhabited locales on the planet.

I have no idea how it parses text. `curl wttr.in/~LosAngelesCA` gave me an address in Russia `curl wttr.in/~LosAngeles,CA` gave me LA in California

For me, it used my IP and got the correct location.

It found my correct location automatically.

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

docs: https://github.com/chubin/wttr.in/blob/master/README.md

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

> Notice that wttr is returning ASCII characters.

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

Update. Thanks!

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."

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

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

Love simple services that do exactly what you would expect

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

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


Well done Windows, well done. ;)

(Yes, I know why it looks crap)

Wow- the thunder animation is pretty cool

Where do you see that?

Worked beautifully for me. Love it.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact