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.
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.
#!/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')
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.
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:
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.
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.
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."
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."
For newbies who might be misled, cURL is available on a ridiculous number of platforms[1]
[1] https://curl.haxx.se/download.html