wttr.in - a maneira certa de verificar o curl
!
wttr.in é um serviço de previsão do tempo orientado para console que oferece suporte a vários métodos de representação de informações, como sequências ANSI orientadas a terminal para clientes HTTP de console (curl, httpie ou wget), HTML para navegadores da web ou PNG para visualizadores gráficos.
Originalmente iniciado como um pequeno projeto, um wrapper para wego, destinado a demonstrar o poder dos serviços orientados para console, wttr.in tornou-se um serviço popular de relatórios meteorológicos, lidando com dezenas de milhões de consultas diariamente.
Você pode vê-lo funcionando aqui: wttr.in.
Documentação | Uso | Saída de uma linha | Formato de saída rico em dados | Visualização do mapa | Formatos de saída | Fases da lua | Internacionalização | Instalação
Você pode acessar o serviço a partir de um shell ou de um navegador da Web como este:
$ curl wttr.in
Weather for City: Paris, France
/ Clear
.-. 10 – 11 °C
― ( ) ― ↑ 11 km/h
`-’ 10 km
/ 0.0 mm
Aqui está um exemplo de boletim meteorológico:
Ou no PowerShell:
Invoke-RestMethod https: // wttr.in
Quer obter informações meteorológicas para um local específico? Você pode adicionar o local desejado ao URL em sua solicitação assim:
$ curl wttr.in/London
$ curl wttr.in/Moscow
$ curl wttr.in/Salt+Lake+City
Se você omitir o nome do local, receberá o relatório da sua localização atual com base no seu endereço IP.
Use códigos de aeroporto de 3 letras para obter informações meteorológicas em um determinado aeroporto:
$ curl wttr.in/muc # Weather for IATA: muc, Munich International Airport, Germany
$ curl wttr.in/ham # Weather for IATA: ham, Hamburg Airport, Germany
Digamos que você queira obter a previsão do tempo para uma localização geográfica diferente de uma vila ou cidade - talvez uma atração em uma cidade, o nome de uma montanha ou algum local especial. Adicione o caractere ~
antes do nome para procurar o nome do local especial antes que o clima seja recuperado:
$ curl wttr.in/~Vostok+Station
$ curl wttr.in/~Eiffel+Tower
$ curl wttr.in/~Kilimanjaro
Para esses exemplos, você verá uma linha abaixo da saída da previsão do tempo que mostra os resultados de geolocalização da pesquisa do local:
Location: Vostok Station, станция Восток, AAT, Antarctica [-78.4642714,106.8364678]
Location: Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, 75007, France [48.8582602,2.29449905432]
Location: Kilimanjaro, Northern, Tanzania [-3.4762789,37.3872648]
Você também pode usar endereços IP (diretos) ou nomes de domínio (prefixados com @
) para especificar um local:
$ curl wttr.in/@github.com
$ curl wttr.in/@msu.ru
Para obter informações detalhadas online, você pode acessar a página /:help:
$ curl wttr.in/:help
Por padrão, as unidades USCS são usadas para consultas dos EUA e o sistema métrico para o resto do mundo. Você pode substituir esse comportamento adicionando ?u
, ?m
ou ?M
a uma URL como esta:
$ curl wttr.in/Amsterdam?u # USCS (used by default in US)
$ curl wttr.in/Amsterdam?m # metric (SI) (used by default everywhere except US)
$ curl wttr.in/Amsterdam?M # metric (SI), but show wind speed in m/s
Se você tiver várias opções para passar, escreva-as sem delimitadores para as opções de uma letra e use &
como delimitador para as opções longas com valores:
$ curl 'wttr.in/Amsterdam?m2&lang=nl'
Seria um equivalente aproximado de -m2 --lang nl
para a sintaxe GNU CLI.
wttr.in atualmente oferece suporte a cinco formatos de saída:
Os formatos ANSI e HTML são selecionados com base na string User-Agent.
Para forçar o texto simples, o que desativa as cores:
$ curl wttr.in/?T
Para restringir a saída a glifos disponíveis em fontes padrão do console (por exemplo, Consolas e Lucida Console):
$ curl wttr.in/?d
O formato PNG pode ser forçado adicionando .png
ao final da consulta:
$ wget wttr.in/Paris.png
Você pode usar todas as opções com o formato PNG como em uma URL, mas é necessário separá-las com _
em vez de ?
e &
:
$ wget wttr.in/Paris_0tqp_lang=fr.png
Opções úteis para o formato PNG:
t
para transparência ( transparency=150
);A transparência é um recurso útil quando PNGs meteorológicos são usados para adicionar dados meteorológicos às imagens:
$ convert source.jpg <( curl wttr.in/Oymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg
Neste exemplo:
source.jpg
- arquivo fonte;target.jpg
- arquivo de destino;Oymyakon
- nome do local;tqp0
- opções (recomendado).Você pode incorporar um widget wttr.in especial, que exibe as condições climáticas do local atual ou selecionado, em uma página HTML usando o wttr-switcher. É assim que parece: wttr-switcher-example ou em um site do mundo real: https://feuerwehr-eisolzried.de/.
O formato de saída de uma linha é conveniente para mostrar informações meteorológicas na barra de status de diferentes programas, como tmux , weechat , etc.
Para formato de saída de uma linha, especifique format
parâmetro de URL adicional:
$ curl wttr.in/Nuremberg?format=3
Nuremberg: ? +11⁰C
Formatos pré-configurados disponíveis: 1, 2, 3, 4 e o formato personalizado usando a notação percentual (veja abaixo).
Você pode especificar vários locais separados por :
(para consultas repetidas):
$ curl wttr.in/Nuremberg:Hamburg:Berlin?format=3
Nuremberg: ? +11⁰C
Ou para processar todas essas consultas de uma vez:
$ curl -s 'wttr.in/{Nuremberg,Hamburg,Berlin}?format=3'
Nuremberg: ? +11⁰C
Hamburg: ? +8⁰C
Berlin: ? +8⁰C
Para especificar seu próprio formato de saída personalizado, use a notação %
especial:
c Weather condition,
C Weather condition textual name,
x Weather condition, plain-text symbol,
h Humidity,
t Temperature (Actual),
f Temperature (Feels Like),
w Wind,
l Location,
m Moon phase ????????,
M Moon day,
p Precipitation (mm/3 hours),
P Pressure (hPa),
u UV index (1-12),
D Dawn*,
S Sunrise*,
z Zenith*,
s Sunset*,
d Dusk*,
T Current time*,
Z Local timezone.
(*times are shown in the local timezone)
Então, essas duas chamadas são iguais:
$ curl wttr.in/London?format=3
London: ⛅️ +7⁰C
$ curl wttr.in/London?format="%l:+%c+%tn"
London: ⛅️ +7⁰C
Ao usar no tmux.conf
, você tem que escapar de %
com %
, ou seja, escrever lá %%
em vez de %
.
A saída não contém nova linha por padrão, quando a notação% é usada, mas a contém quando o formato pré-configurado ( 1
, 2
, 3
etc.) é usado. Para ter a nova linha na saída quando a notação% for usada, use 'n' e aspas simples ao fazer uma consulta no shell.
Em programas que consultam o serviço automaticamente (como tmux), é melhor usar algum intervalo de atualização razoável. No tmux, você pode configurá-lo com status-interval
.
Se vários locais separados :
forem especificados na consulta, especifique o período de atualização como um parâmetro de consulta adicional period=
:
set -g status-interval 60
WEATHER='#(curl -s wttr.in/London:Stockholm:Moscow?format="%%l:+%%c%%20%%t%%60%%w&period=60")'
set -g status-right "$WEATHER ..."
Para incorporar na barra de status existente de um cliente IRC (WeeChat):
/alias add wttr /exec -pipe "/mute /set plugins.var.wttr" url:wttr.in/Montreal?format=%l:+%c+%f+%h+%p+%P+%m+%w+%S+%s;/wait 3 /item refresh wttr
/trigger add wttr timer 60000;0;0 "" "" "/wttr"
/item add wttr "" "${plugins.var.wttr}"
/eval /set weechat.bar.status.items ${weechat.bar.status.items},spacer,wttr
/eval /set weechat.startup.command_after_plugins ${weechat.startup.command_after_plugins};/wttr
/wttr
Exemplo de uso do Conky:
${texeci 1800 curl wttr.in/kyiv_0pq_lang=uk.png
| convert - -transparent black $HOME/.config/conky/out.png}
${image $HOME/.config/conky/out.png -p 0,0}
Exemplo de integração IRC:
Para ver emojis no terminal, você precisa:
Para a fonte emoji, recomendamos Noto Color Emoji , e uma boa opção alternativa seria a fonte Emoji One ; ambos suportam todos os glifos emoji necessários.
Configuração de fonte:
$ cat ~/.config/fontconfig/fonts.conf
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPE fontconfig SYSTEM "fonts.dtd">
< fontconfig >
< alias >
< family >serif</ family >
< prefer >
< family >Noto Color Emoji</ family >
</ prefer >
</ alias >
< alias >
< family >sans-serif</ family >
< prefer >
< family >Noto Color Emoji</ family >
</ prefer >
</ alias >
< alias >
< family >monospace</ family >
< prefer >
< family >Noto Color Emoji</ family >
</ prefer >
</ alias >
</ fontconfig >
(para aplicar a configuração, execute fc-cache -f -v
).
Em alguns casos, o entendimento tmux
e do terminal de alguns caracteres emoji pode ser diferente, o que pode causar efeitos estranhos semelhantes aos descritos em #579.
No formato de saída experimental rico em dados, que está disponível no código de visualização v2
, muitas informações adicionais sobre clima e astronomia estão disponíveis:
$ curl v2.wttr.in/München
ou
$ curl wttr.in/München?format=v2
ou, se você preferir Fontes Nerd em vez de Emoji, v2d
(dia) ou v2n
(noite):
$ curl v2d.wttr.in/München
(O modo é experimental e possui diversas limitações atualmente:
Atualmente, são necessários alguns ajustes em alguns terminais, para obter a melhor visualização possível.
Dependendo da sua configuração, você poderá executar todas as etapas ou apenas algumas. Atualmente, o URXVT não oferece suporte a fontes relacionadas a emojis, mas podemos obter quase o mesmo efeito usando Font-Symbola . Portanto, adicione ao seu arquivo .Xresources
a seguinte linha:
xft:symbola:size=10:minspace=False
Você pode adicioná-lo após a fonte de sua preferência e ele só aparecerá quando necessário. Então, se você perceber ou sentir que está tendo problemas de espaçamento, adicione isto: URxvt.letterSpace: 0
Por algum motivo, o URXVT às vezes para de decidir corretamente o espaçamento das palavras e precisamos forçá-lo desta forma.
O resultado deve ser parecido com:
Na visualização experimental do mapa, disponível sob o código de visualização v3
, estão disponíveis informações meteorológicas sobre uma região geográfica:
$ curl v3.wttr.in/Bayern.sxl
ou diretamente no navegador:
A visualização do mapa atualmente suporta três formatos:
Terminal com suporte a protocolos de imagens inline:
⟶ Artigo detalhado: Imagens no terminal
terminal | Ambiente | Suporte de imagens | Protocolo |
---|---|---|---|
uxterm | X11 | sim | Seisel |
mltermo | X11 | sim | Seisel |
gatinho | X11 | sim | gatinha |
termo | X11 | sim | PII |
Azulejo escuro | X11 | sim | Seisel |
Jexer | X11 | sim | Seisel |
Terminal GNOME | X11 | em andamento | Seisel |
entusiasmo | X11 | em andamento | Seisel |
pé | Wayland | sim | Seisel |
TermoDom | Rede | sim | Seisel |
Iate | sim | Seisel | |
iTerm2 | Mac OS X | sim | PII |
mentolado | Windows | sim | Seisel |
Terminal do Windows | Windows | em andamento | Seisel |
RLogin | Windows | sim | Seisel |
O formato JSON é um recurso que fornece acesso aos dados do wttr.in por meio de um formato fácil de analisar, sem exigir que o usuário crie um script complexo para reinterpretar a saída gráfica do wttr.in.
Para buscar informações no formato JSON, use a seguinte sintaxe:
$ curl wttr.in/Detroit?format=j1
Isso irá buscar informações sobre a região de Detroit no formato JSON. O código do formato j1 é usado para permitir o uso de outros layouts para a saída JSON.
O resultado será parecido com o seguinte:
{
"current_condition" : [
{
"FeelsLikeC" : " 25 " ,
"FeelsLikeF" : " 76 " ,
"cloudcover" : " 100 " ,
"humidity" : " 76 " ,
"observation_time" : " 04:08 PM " ,
"precipMM" : " 0.2 " ,
"pressure" : " 1019 " ,
"temp_C" : " 22 " ,
"temp_F" : " 72 " ,
"uvIndex" : 5 ,
"visibility" : " 16 " ,
"weatherCode" : " 122 " ,
"weatherDesc" : [
{
"value" : " Overcast "
}
],
"weatherIconUrl" : [
{
"value" : " "
}
],
"winddir16Point" : " NNE " ,
"winddirDegree" : " 20 " ,
"windspeedKmph" : " 7 " ,
"windspeedMiles" : " 4 "
}
],
...
A maioria desses valores é autoexplicativa, exceto weatherCode
. O weatherCode
é uma enumeração que você pode encontrar no site WorldWeatherOnline ou no código-fonte wttr.in.
O formato Prometheus Metrics é um recurso que fornece acesso aos dados do wttr.in por meio de um formato fácil de analisar para sistemas de monitoramento, sem exigir que o usuário crie um script complexo para reinterpretar a saída gráfica do wttr.in.
Para buscar informações no formato Prometheus, use a seguinte sintaxe:
$ curl wttr.in/Detroit?format=p1
Isso irá buscar informações sobre a região de Detroit no formato Prometheus Metrics. O código de formato p1
é usado para permitir o uso de outros layouts para a saída do Prometheus Metrics.
Uma configuração possível para o Prometheus poderia ser assim:
- job_name : ' wttr_in_detroit '
static_configs :
- targets : ['wttr.in']
metrics_path : ' /Detroit '
params :
format : ['p1']
O resultado será parecido com o seguinte:
# HELP temperature_feels_like_celsius Feels Like Temperature in Celsius
temperature_feels_like_celsius{forecast="current"} 7
# HELP temperature_feels_like_fahrenheit Feels Like Temperature in Fahrenheit
temperature_feels_like_fahrenheit{forecast="current"} 45
[truncated]
...
wttr.in também pode ser usado para verificar a fase da Lua. Este exemplo mostra como ver a fase atual da Lua no modo de saída total:
$ curl wttr.in/Moon
Obtenha a fase da lua para uma data específica adicionando @YYYY-MM-DD
:
$ curl wttr.in/Moon@2016-12-25
As informações da fase da lua usam pyphoon como backend.
Para obter as informações das fases da lua no modo online, use %m
:
$ curl wttr.in/London?format=%m
?
Tenha em mente que a representação Unicode das fases da lua sofre 2 ressalvas:
Com algumas fontes, a representação ?
é ambíguo, pois parece quase sombreado ou quase iluminado, dependendo se o seu terminal está no modo claro ou no modo escuro. Depender de fontes coloridas como noto-fonts
resolve esse problema.
A representação ?
também é ambíguo, pois significa “último trimestre” no hemisfério norte, mas “primeiro trimestre” no hemisfério sul. Também não significa nada nas zonas tropicais. Esta é uma limitação que o Unicode conhece. Mas ainda não foi resolvido em wttr.in
Consulte #247, #364 para os problemas de rastreamento correspondentes e pyphoon#1 para pyphoon. Qualquer ajuda é bem-vinda.
wttr.in suporta nomes de locais multilíngues que podem ser especificados em qualquer idioma do mundo (pode ser surpreendente, mas muitos locais no mundo não têm um nome em inglês).
A string de consulta deve ser especificada em Unicode (codificado em hexadecimal ou não). Os espaços na string de consulta devem ser substituídos por +
:
$ curl wttr.in/станция+Восток
Weather report: станция Восток
Overcast
.--. -65 – -47 °C
.-( ). ↑ 23 km/h
(___.__)__) 15 km
0.0 mm
O idioma usado para a saída (exceto o nome do local) não depende do idioma de entrada e é o inglês (por padrão) ou o idioma preferencial do navegador (se a consulta foi emitida a partir de um navegador) especificado no cabeçalhos de consulta ( Accept-Language
).
O idioma pode ser definido explicitamente ao usar clientes de console usando opções de linha de comando como esta:
curl -H "Accept-Language: fr" wttr.in
http GET wttr.in Accept-Language:ru
O idioma preferido pode ser forçado usando a opção lang
:
$ curl wttr.in/Berlin?lang=de
A terceira opção é escolher o idioma utilizando o nome DNS utilizado na consulta:
$ curl de.wttr.in/Berlin
wttr.in está atualmente traduzido para 54 idiomas e o número de idiomas suportados está em constante crescimento.
Consulte /:translation para saber mais sobre o processo de tradução, para ver a lista de idiomas suportados e colaboradores ou para saber como você pode ajudar a traduzir wttr.in no seu idioma.
Para instalar o aplicativo:
wttr.in tem as seguintes dependências externas:
Depois de instalar o golang, instale wego
:
go install github.com/schachmat/wego@latest
Requisitos do Python:
Se quiser obter boletins meteorológicos como arquivos PNG, você também precisará instalar:
Você pode instalar a maioria deles usando pip
.
Alguns pacotes python usam LLVM, então instale-o primeiro:
apt-get install llvm-7 llvm-7-dev
Se virtualenv
for usado:
virtualenv -p python3 ve
ve/bin/pip3 install -r requirements.txt
ve/bin/python3 bin/srv.py
Além disso, você precisa instalar o banco de dados geoip2. Você pode usar um banco de dados gratuito GeoLite2 que pode ser baixado em (http://dev.maxmind.com/geoip/geoip2/geolite2/).
Se você quiser usar o serviço IP2location para endereços IP que não são cobertos pelo GeoLite2, você deve obter uma chave API desse serviço e depois salvar no arquivo ~/.ip2location.key
:
$ echo 'YOUR_IP2LOCATION_KEY' > ~/.ip2location.key
Se você não tiver esse arquivo, o serviço será ignorado silenciosamente (não é um grande problema, porque o banco de dados MaxMind é muito bom).
/root/.wegorc
/root/.ip2location.key (optional)
/app/airports.dat
/app/GeoLite2-City.mmdb
Para obter uma chave API WorldWeatherOnline, você deve se registrar aqui:
https://developer.worldweatheronline.com/auth/register
Depois de ter uma chave WorldWeatherOnline, você pode salvá-la no arquivo de chave WWO: ~/.wwo.key
Além disso, você deve especificar a chave na configuração wego
:
$ cat ~/.wegorc
{
"APIKey" : " 00XXXXXXXXXXXXXXXXXXXXXXXXXXX " ,
"City" : " London " ,
"Numdays" : 3 ,
"Imperial" : false ,
"Lang" : " en "
}
O parâmetro City
em ~/.wegorc
é ignorado.
Configure as seguintes variáveis de ambiente que definem o caminho para a instalação local wttr.in
, para o banco de dados GeoLite e para a instalação wego
. Por exemplo:
export WTTR_MYDIR= " /home/igor/wttr.in "
export WTTR_GEOLITE= " /home/igor/wttr.in/GeoLite2-City.mmdb "
export WTTR_WEGO= " /home/igor/go/bin/wego "
export WTTR_LISTEN_HOST= " 0.0.0.0 "
export WTTR_LISTEN_PORT= " 8002 "
É recomendado que você configure também o servidor web que será utilizado para acessar o serviço:
server {
listen [::]:80;
server_name wttr.in *.wttr.in;
access_log /var/log/nginx/wttr.in-access.log main ;
error_log /var/log/nginx/wttr.in-error.log;
location / {
proxy_pass http://127.0.0.1:8002;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $remote_addr ;
client_max_body_size 10m ;
client_body_buffer_size 128k ;
proxy_connect_timeout 90 ;
proxy_send_timeout 90 ;
proxy_read_timeout 90 ;
proxy_buffer_size 4k ;
proxy_buffers 4 32k ;
proxy_busy_buffers_size 64k ;
proxy_temp_file_write_size 64k ;
expires off ;
}
}