wttr.in: ¡la forma correcta de comprobar el curl
!
wttr.in es un servicio de pronóstico del tiempo orientado a consola que admite varios métodos de representación de información, como secuencias ANSI orientadas a terminal para clientes HTTP de consola (curl, httpie o wget), HTML para navegadores web o PNG para visores gráficos.
Originalmente comenzó como un pequeño proyecto, un contenedor para wego, destinado a demostrar el poder de los servicios orientados a consola, wttr.in se convirtió en un popular servicio de informes meteorológicos, que maneja decenas de millones de consultas diariamente.
Puedes verlo ejecutándose aquí: wttr.in.
Documentación | Uso | Salida de una línea | Formato de salida rico en datos | Vista de mapa | Formatos de salida | Fases lunares | Internacionalización | Instalación
Puede acceder al servicio desde un shell o desde un navegador web como este:
$ curl wttr.in
Weather for City: Paris, France
/ Clear
.-. 10 – 11 °C
― ( ) ― ↑ 11 km/h
`-’ 10 km
/ 0.0 mm
Aquí hay un ejemplo de informe meteorológico:
O en PowerShell:
Invoke-RestMethod https: // wttr.in
¿Quiere obtener la información meteorológica de una ubicación específica? Puede agregar la ubicación deseada a la URL en su solicitud de esta manera:
$ curl wttr.in/London
$ curl wttr.in/Moscow
$ curl wttr.in/Salt+Lake+City
Si omite el nombre de la ubicación, obtendrá el informe de su ubicación actual según su dirección IP.
Utilice códigos de aeropuerto de 3 letras para obtener la información meteorológica en un determinado aeropuerto:
$ curl wttr.in/muc # Weather for IATA: muc, Munich International Airport, Germany
$ curl wttr.in/ham # Weather for IATA: ham, Hamburg Airport, Germany
Supongamos que desea obtener el clima para una ubicación geográfica distinta de un pueblo o ciudad, tal vez una atracción en una ciudad, el nombre de una montaña o alguna ubicación especial. Agregue el carácter ~
antes del nombre para buscar el nombre de esa ubicación especial antes de recuperar el clima:
$ curl wttr.in/~Vostok+Station
$ curl wttr.in/~Eiffel+Tower
$ curl wttr.in/~Kilimanjaro
Para estos ejemplos, verá una línea debajo del resultado del pronóstico del tiempo que muestra los resultados de geolocalización al buscar la ubicación:
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]
También puede utilizar direcciones IP (directas) o nombres de dominio (con el prefijo @
) para especificar una ubicación:
$ curl wttr.in/@github.com
$ curl wttr.in/@msu.ru
Para obtener información detallada en línea, puede acceder a la página /:ayuda:
$ curl wttr.in/:help
Por defecto se utilizan las unidades USCS para las consultas de EE.UU. y el sistema métrico para el resto del mundo. Puedes anular este comportamiento agregando ?u
, ?m
o ?M
a una 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
Si tiene varias opciones para aprobar, escríbalas sin delimitadores intermedios para las opciones de una letra y use &
como delimitador para las opciones largas con valores:
$ curl 'wttr.in/Amsterdam?m2&lang=nl'
Sería un equivalente aproximado de -m2 --lang nl
para la sintaxis de GNU CLI.
wttr.in actualmente admite cinco formatos de salida:
Los formatos ANSI y HTML se seleccionan según la cadena User-Agent.
Para forzar texto sin formato, que desactiva los colores:
$ curl wttr.in/?T
Para restringir la salida a glifos disponibles en fuentes de consola estándar (por ejemplo, Consolas y Lucida Console):
$ curl wttr.in/?d
El formato PNG se puede forzar agregando .png
al final de la consulta:
$ wget wttr.in/Paris.png
Puedes usar todas las opciones con formato PNG como en una URL, pero debes separarlas con _
en lugar de ?
y &
:
$ wget wttr.in/Paris_0tqp_lang=fr.png
Opciones útiles para el formato PNG:
t
para transparencia ( transparency=150
);La transparencia es una característica útil cuando se utilizan PNG meteorológicos para agregar datos meteorológicos a las imágenes:
$ convert source.jpg <( curl wttr.in/Oymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg
En este ejemplo:
source.jpg
- archivo fuente;target.jpg
- archivo de destino;Oymyakon
- nombre del lugar;tqp0
- opciones (recomendado).Puede incrustar un widget especial de wttr.in, que muestra las condiciones climáticas para la ubicación actual o seleccionada, en una página HTML usando wttr-switcher. Así es como se ve: wttr-switcher-example o en un sitio web real: https://feuerwehr-eisolzried.de/.
El formato de salida de una línea es conveniente para mostrar información meteorológica en la barra de estado de diferentes programas, como tmux , weechat , etc.
Para el formato de salida de una línea, especifique format
de parámetro de URL adicional:
$ curl wttr.in/Nuremberg?format=3
Nuremberg: ? +11⁰C
Formatos preconfigurados disponibles: 1, 2, 3, 4 y el formato personalizado que utiliza la notación porcentual (ver más abajo).
Puede especificar varias ubicaciones separadas con :
(para consultas repetidas):
$ curl wttr.in/Nuremberg:Hamburg:Berlin?format=3
Nuremberg: ? +11⁰C
O para procesar todas estas consultas a la vez:
$ curl -s 'wttr.in/{Nuremberg,Hamburg,Berlin}?format=3'
Nuremberg: ? +11⁰C
Hamburg: ? +8⁰C
Berlin: ? +8⁰C
Para especificar su propio formato de salida personalizado, utilice la notación %
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)
Entonces, estas dos llamadas son iguales:
$ curl wttr.in/London?format=3
London: ⛅️ +7⁰C
$ curl wttr.in/London?format="%l:+%c+%tn"
London: ⛅️ +7⁰C
Cuando se usa en tmux.conf
, debe escapar %
con %
, es decir, escribir allí %%
en lugar de %
.
La salida no contiene una nueva línea de forma predeterminada, cuando se usa la notación%, pero sí la contiene cuando se usa el formato preconfigurado ( 1
, 2
, 3
, etc.). Para tener la nueva línea en la salida cuando se usa la notación %, use 'n' y comillas simples al realizar una consulta desde el shell.
En programas que consultan el servicio automáticamente (como tmux), es mejor utilizar un intervalo de actualización razonable. En tmux, puedes configurarlo con status-interval
.
Si se especifican :
ubicaciones separadas en la consulta, especifique el período de actualización como 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 insertar en la barra de estado existente de un cliente de 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
Ejemplo de uso de 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}
Ejemplo de integración IRC:
Para ver emojis en la terminal, necesitas:
Para la fuente emoji, recomendamos Noto Color Emoji , y una buena opción alternativa sería la fuente Emoji One ; Ambos admiten todos los glifos emoji necesarios.
Configuración de fuente:
$ 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 la configuración, ejecute fc-cache -f -v
).
En algunos casos, tmux
y la comprensión del terminal de algunos caracteres emoji pueden diferir, lo que puede causar efectos extraños similares al descrito en el n.° 579.
En el formato de salida experimental rico en datos, que está disponible en el código de vista v2
, hay disponible mucha información meteorológica y astronómica adicional:
$ curl v2.wttr.in/München
o
$ curl wttr.in/München?format=v2
o, si prefieres Nerd Fonts en lugar de Emoji, v2d
(día) o v2n
(noche):
$ curl v2d.wttr.in/München
(El modo es experimental y tiene varias limitaciones actualmente:
Actualmente, se necesitan algunos ajustes para algunos terminales, para obtener la mejor visualización posible.
Dependiendo de su configuración, es posible que esté siguiendo todos los pasos o solo algunos. Actualmente, URXVT no admite fuentes relacionadas con emoji, pero podemos obtener casi el mismo efecto usando Font-Symbola . Así que agregue a su archivo .Xresources
la siguiente línea:
xft:symbola:size=10:minspace=False
Puede agregarlo después de su fuente preferida y solo aparecerá cuando sea necesario. Luego, si ve o siente que tiene problemas de espaciado, agregue esto: URxvt.letterSpace: 0
Por alguna razón, URXVT a veces deja de decidir correctamente el espaciado de palabras y debemos forzarlo de esta manera.
El resultado debería verse así:
En la vista de mapa experimental, que está disponible bajo el código de vista v3
, está disponible información meteorológica sobre una región geográfica:
$ curl v3.wttr.in/Bayern.sxl
o directamente en el navegador:
La vista del mapa actualmente admite tres formatos:
Terminal con soporte de protocolos de imágenes en línea:
⟶ Artículo detallado: Imágenes en terminal
Terminal | Ambiente | Soporte de imágenes | Protocolo |
---|---|---|---|
uxterm | X11 | Sí | síxel |
término ml | X11 | Sí | síxel |
bote | X11 | Sí | Bote |
wezterm | X11 | Sí | PII |
Azulejo oscuro | X11 | Sí | síxel |
jejejeje | X11 | Sí | síxel |
Terminal GNOME | X11 | en curso | síxel |
presteza | X11 | en curso | síxel |
pie | wayland | Sí | síxel |
DomTerm | Web | Sí | síxel |
Yaft | pensión completa | Sí | síxel |
iTerm2 | MacOS X | Sí | PII |
menta | ventanas | Sí | síxel |
Terminal de Windows | ventanas | en curso | síxel |
RIniciar sesión | ventanas | Sí | síxel |
El formato JSON es una característica que proporciona acceso a los datos de wttr.in a través de un formato fácil de analizar, sin necesidad de que el usuario cree un script complejo para reinterpretar la salida gráfica de wttr.in.
Para recuperar información en formato JSON, utilice la siguiente sintaxis:
$ curl wttr.in/Detroit?format=j1
Esto obtendrá información sobre la región de Detroit en formato JSON. El código de formato j1 se utiliza para permitir el uso de otros diseños para la salida JSON.
El resultado será similar al siguiente:
{
"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 "
}
],
...
La mayoría de estos valores se explican por sí mismos, aparte de weatherCode
. El weatherCode
es una enumeración que puede encontrar en el sitio web WorldWeatherOnline o en el código fuente de wttr.in.
El formato Prometheus Metrics es una característica que proporciona acceso a los datos de wttr.in a través de un formato fácil de analizar para sistemas de monitoreo, sin necesidad de que el usuario cree un script complejo para reinterpretar la salida gráfica de wttr.in.
Para recuperar información en formato Prometheus, utilice la siguiente sintaxis:
$ curl wttr.in/Detroit?format=p1
Esto obtendrá información sobre la región de Detroit en formato Prometheus Metrics. El código de formato p1
se utiliza para permitir el uso de otros diseños para la salida de Prometheus Metrics.
Una posible configuración para Prometheus podría verse así:
- job_name : ' wttr_in_detroit '
static_configs :
- targets : ['wttr.in']
metrics_path : ' /Detroit '
params :
format : ['p1']
El resultado será similar al siguiente:
# 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 también se puede utilizar para comprobar la fase de la Luna. Este ejemplo muestra cómo ver la fase lunar actual en el modo de salida completa:
$ curl wttr.in/Moon
Obtenga la fase lunar para una fecha particular agregando @YYYY-MM-DD
:
$ curl wttr.in/Moon@2016-12-25
La información de la fase lunar utiliza pyphoon como backend.
Para obtener la información de la fase lunar en el modo en línea, use %m
:
$ curl wttr.in/London?format=%m
?
Tenga en cuenta que la representación Unicode de las fases lunares sufre 2 advertencias:
Con algunas fuentes, la representación ?
es ambiguo, ya que aparecerá casi en sombras o casi iluminado, dependiendo de si tu terminal está en modo claro o en modo oscuro. Depender de fuentes de colores como noto-fonts
soluciona este problema.
¿La representación ?
También es ambiguo, ya que significa "último cuarto" en el hemisferio norte, pero "primer cuarto" en el hemisferio sur. Tampoco significa nada en las zonas tropicales. Esta es una limitación que Unicode conoce. Pero todavía no se ha solucionado en wttr.in
Consulte los puntos 247 y 364 para conocer los problemas de seguimiento correspondientes y pyphoon 1 para pyphoon. Cualquier ayuda es bienvenida.
wttr.in admite nombres de ubicaciones multilingües que se pueden especificar en cualquier idioma del mundo (puede resultar sorprendente, pero muchas ubicaciones en el mundo no tienen un nombre en inglés).
La cadena de consulta debe especificarse en Unicode (codificado en hexadecimal o no). Los espacios en la cadena de consulta deben reemplazarse con +
:
$ curl wttr.in/станция+Восток
Weather report: станция Восток
Overcast
.--. -65 – -47 °C
.-( ). ↑ 23 km/h
(___.__)__) 15 km
0.0 mm
El idioma utilizado para la salida (excepto el nombre de la ubicación) no depende del idioma de entrada y es inglés (de forma predeterminada) o el idioma preferido del navegador (si la consulta se realizó desde un navegador) que se especifica en el encabezados de consulta ( Accept-Language
).
El idioma se puede configurar explícitamente cuando se utilizan clientes de consola mediante opciones de línea de comandos como esta:
curl -H "Accept-Language: fr" wttr.in
http GET wttr.in Accept-Language:ru
El idioma preferido se puede forzar usando la opción lang
:
$ curl wttr.in/Berlin?lang=de
La tercera opción es elegir el idioma utilizando el nombre DNS utilizado en la consulta:
$ curl de.wttr.in/Berlin
wttr.in está actualmente traducido a 54 idiomas y la cantidad de idiomas admitidos crece constantemente.
Consulte /:translation para obtener más información sobre el proceso de traducción, para ver la lista de idiomas admitidos y colaboradores, o para saber cómo puede ayudar a traducir wttr.in a su idioma.
Para instalar la aplicación:
wttr.in tiene las siguientes dependencias externas:
Después de instalar golang, instale wego
:
go install github.com/schachmat/wego@latest
Requisitos de Python:
Si desea obtener informes meteorológicos como archivos PNG, también deberá instalar:
Puedes instalar la mayoría de ellos usando pip
.
Algunos paquetes de Python usan LLVM, así que instálelo primero:
apt-get install llvm-7 llvm-7-dev
Si se utiliza virtualenv
:
virtualenv -p python3 ve
ve/bin/pip3 install -r requirements.txt
ve/bin/python3 bin/srv.py
Además, necesita instalar la base de datos geoip2. Puede utilizar una base de datos gratuita GeoLite2 que se puede descargar desde (http://dev.maxmind.com/geoip/geoip2/geolite2/).
Si desea utilizar el servicio IP2location para direcciones IP que no están cubiertas por GeoLite2, debe obtener una clave API de ese servicio y luego guardarla en el archivo ~/.ip2location.key
:
$ echo 'YOUR_IP2LOCATION_KEY' > ~/.ip2location.key
Si no tiene este archivo, el servicio se omitirá silenciosamente (no es un gran problema, porque la base de datos MaxMind es bastante buena).
/root/.wegorc
/root/.ip2location.key (optional)
/app/airports.dat
/app/GeoLite2-City.mmdb
Para obtener una clave API de WorldWeatherOnline, debe registrarse aquí:
https://developer.worldweatheronline.com/auth/register
Una vez que tenga una clave WorldWeatherOnline, puede guardarla en el archivo de clave WWO: ~/.wwo.key
Además, debe especificar la clave en la configuración wego
:
$ cat ~/.wegorc
{
"APIKey" : " 00XXXXXXXXXXXXXXXXXXXXXXXXXXX " ,
"City" : " London " ,
"Numdays" : 3 ,
"Imperial" : false ,
"Lang" : " en "
}
Se ignora el parámetro City
en ~/.wegorc
.
Configure las siguientes variables de entorno que definen la ruta a la instalación local wttr.in
, a la base de datos GeoLite y a la instalación wego
. Por ejemplo:
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 "
Se recomienda configurar también el servidor web que se utilizará para acceder al servicio:
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 ;
}
}