Clima desde terminal

66

Quiero encontrar el clima actual de una ciudad en particular o mi ubicación desde la terminal. ¿Hay alguna aplicación de clima de línea de comandos?

Avinash Raj
fuente

Respuestas:

135

Simplemente ingrese lo siguiente en una terminal:

curl wttr.in

Y obtendrá su ubicación de /etc/timezone. De lo contrario curl wttr.in/your_location. Por ejemplo, para Teherán:

curl wttr.in/tehran

Lo que te da:

Salida de muestra

También puedes comparar dos ciudades:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

El código fuente del desarrollador está disponible en Github .

K-FIVE
fuente
2
Mucho mejor!
Zachary Dahan
2
github.com/schachmat/wego no es malo para el devsentre nosotros
Timo
me gustó, pero esta vez arrojó un error: Lo sentimos, en este momento nos estamos quedando sin consultas al servicio meteorológico. Recibiremos nuevas consultas lo antes posible.
Doyousketch2
17

Busque su ciudad en http://www.accuweather.com y reemplace la URL en el siguiente script con la URL de su ciudad:

#!/bin/sh

URL='http://www.accuweather.com/en/de/berlin/10178/weather-forecast/178087'

wget -q -O- "$URL" | awk -F\' '/acm_RecentLocationsCarousel\.push/{print $2": "$16", "$12"°" }'| head -1

Salida de muestra:

Berlin, Germany: Foggy, 1°
Florian Diesch
fuente
Pero, ¿cómo lo cambio a Celcius?
dat tutbrus
En la fuente html, ya veo acm_RecentLocationsCarousel.push({name:"Berlin, Germany", daypart:'day', href:'/en/de/berlin/10178/weather-forecast/178087', icon:'i-6-l', bg:'c', temp:'0', realfeel:'-6', text:"Mostly cloudy"});. Usando su código, el awkseparador de campo es '' (espacio). ¿Es $12(temperatura) la 12ª columna?
Timo
Mi culpa es el awkseparador '. La API utiliza 2 números, el primero es el postleitzahlcódigo postal o. El segundo parece ser un número de código de API
Timo
1
Ya no funciona, ¿ha cambiado la API de Accuweather?
Timo
14

Tengo un camino más.

Abra su .bashrcarchivo y luego pegue este código en la parte inferior

weather(){ curl -s "http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=${@:-<YOURZIPORLOCATION>}"|perl -ne '/<title>([^<]+)/&&printf "%s: ",$1;/<fcttext>([^<]+)/&&print $1,"\n"';}

Luego guarda y cierra tu .bashrcarchivo.

ahora escriba bashpara actualizar el archivo.

luego escribe

weather <location name>

por ejemplo

august@august-OEM:~$ weather guntur
December 14, 2013: Clear. High 31&amp;deg;C (87&amp;deg;F). Winds 0 kph North
December 15, 2013: Clear. High 29&amp;deg;C (84&amp;deg;F). Winds 10 kph NNW
December 16, 2013: Clear. High 31&amp;deg;C (87&amp;deg;F). Winds 10 kph North
December 17, 2013: Clear. High 29&amp;deg;C (84&amp;deg;F). Winds 7 kph ENE
December 18, 2013: Scattered Clouds. High 29&amp;deg;C (84&amp;deg;F). Winds 3 kph ENE
December 19, 2013: Scattered Clouds. High 29&amp;deg;C (84&amp;deg;F). Winds 3 kph ENE
rɑːdʒɑ
fuente
1
Agradable con el pronóstico del tiempo. +1 de mi parte
souravc
Esto ya no funciona, las últimas fechas que muestra son de mayo de 2015 (al menos para Ciudad del Cabo, Sudáfrica). Un examen más detallado de la salida xml revela que el padre txt_forecast no se ha actualizado desde mayo de 2015, mientras que el elemento simpleforecast parece tener los datos más recientes.
Zahir J
Actualizaré mi respuesta
rɑːdʒɑ
Reemplace YOUZIPORLOCATION con $ 1 si desea que el clima <nombre de ubicación> funcione
Ed Neville
Cuando reemplazo YOUZIPORLOCATIONcon $1y paso 20001(código postal de Washington, DC), obtengo líneas que se ven sin formato como Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.cuando uso "washington.dc", obtengo la salida de la tabla May 4, 2015: Clear. High 32&amp;deg;C (89&amp;deg;F). Winds 43 kph East. ¿Alguna idea de por qué la diferencia?
Blalterman
14

Aquí hay una gran utilidad de línea de comando semi-gráfica escrita en Go:

https://github.com/schachmat/wego/

Deberá instalar Go y configurar algunas cosas de API, pero las instrucciones están ahí. Aquí hay una foto de muestra:

ingrese la descripción de la imagen aquí

jojo
fuente
55
Esto se está alojando públicamente ahora, con mapeo de dirección IP a región. Prueba: curl -4 wttr.in
jschrab
2
@jschrab: Y no necesitas -4 en realidad. curl wttr.ines suficiente
Igor Chubin
Las unidades métricas también están disponibles en la versión alojada públicamente, así:curl wttr.in/Helsinki?m
Ville
6

Intenta usar

telnet rainmaker.wunderground.com

fuente
1
¿Esto parece ser solo de EE. UU.?
Vladimir Panteleev
5

Primero necesita instalar el paquete weather-util, para hacerlo simplemente presione Ctrl+ Alt+ Ten su teclado para abrir la Terminal. Cuando se abra, ejecute los siguientes comandos:

sudo apt-get install weather-util

Necesitará su código meteorológico local .

Después de la instalación puedes ejecutar weather -i <code>. El código que obtienes del enlace de arriba. Para obtener una lista de las opciones disponibles, puede ejecutar weatherInformación del clima

Mitch
fuente
1
muestra Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C). no hay manera de saber el clima actual.
Avinash Raj
Dependiendo de su ubicación, esa podría ser la información actual disponible.
Mitch
1
Acabo de probar esto y descubrí que es más fácil de usar ahora: weather YOURLOCATIONNAMEbusca tu ubicación y proporciona posiblemente múltiples resultados. A partir de estos, puede leer el identificador de la estación que puede usar como argumento para obtener su información meteorológica
Nicolas
Parece que el servicio del que depende ha sido descontinuado. Acabo de instalar la versión 2.0 y weather LAX(que debería mostrar el clima del Aeropuerto Internacional de Los Ángeles) muestra un error 404 para weather.noaa.gov/pub/data/observations/metar/decoded/KNKX.TXT
Keith Thompson
1
Ese archivo de datos en particular se ha movido de aquí para aquí . Debería ser posible actualizar los archivos de datos, cambiando cada aparición de http://weather.noaa.gov/pub/dataa http://tgftp.nws.noaa.gov/data. ACTUALIZACIÓN: Parece que ya lo arreglaron en la versión 2.1, que puede obtener desde el sitio del proyecto .
Keith Thompson el
5

ansiweather

AnsiWeather es un script de Shell para mostrar las condiciones climáticas actuales en su terminal, con soporte para colores ANSI y símbolos Unicode. Los datos meteorológicos provienen de la API meteorológica gratuita OpenWeatherMap.

sudo apt-get install ansiweather
ansiweather -l London,GB -f 3
London forecast => Sat Jan 13: 7/2 °C ☔ - Sun Jan 14: 4/1 °C ☔ - Mon Jan 15: 9/6 °C ☔

https://github.com/fcambus/ansiweather

usuario782355
fuente
2

también un programa que viene preinstalado con ubuntu llamado inxi le dará todo tipo de estadísticas en su computadora y generará información climática.

comando: inxi --help

comando: inxi -w

        Conditions: 82 F (28 C) - Clear Time: May 13, 10:52 AM CDT

comando: inxi -wxxx

     Conditions: 82 F (28 C) - Clear Wind: From the SW at 13 MPH Humidity: 60%

       Pressure: 29.99 in (1016 mb) Heat Index: 84 F (29 C)
       Location: city (USA) Altitude: 185 m
       Time: May 13, 10:52 AM CDT (America/Chicago) Observation Time: May 13, 9:54 AM CDT
infinitim4tr1x
fuente
Parece que inxi no es parte de ubuntu, a partir de 10,04, pero se puede instalar consudo apt install inxi
Starbuck
Sí, inxiestá disponible, pero primero debe habilitar el repositorio del universo.
mchid
2

Puedes comparar ciudades usando:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

como se ilustra en la respuesta más votada. wttr.intambién hace una gran pantalla de "bienvenida" cada vez que abre el terminal. Haga esto agregándolo a su ~/.bashrcarchivo. Lo hice para incluir información sobre el clima, la fecha, la hora y la distribución como se detalla en esta respuesta: ¿Cómo puedo obtener esta pantalla de bienvenida de la terminal?

Bash Splash en Windows 10.png

Lo siento, estaba en Ubuntu en Windows 10 WSL para las actualizaciones de primavera de 2018 cuando capturé esta imagen. Prometo que volveré a Ubuntu en Linux pronto.

WinEunuuchs2Unix
fuente
2

Para obtener información meteorológica aún más corta, http://weather.tuxnet24.de proporciona datos meteorológicos de Yahoo! en formato de texto y xml.

Los archivos del XML se pueden obtener con un analizador XML como xmllint, es decir.

Escribí un script de búsqueda de clima para preguntas y respuestas, que obtiene la temperatura actual y la descripción del clima, luego almacena un símbolo unicode correspondiente a la descripción y lo muestra como

☂ 6 ° C

Actualizo regularmente a través de cronjob y luego uso la salida en el estado de mi bandeja.

Obtenga su identificación en yahoocom / news / weather. Cambie la ubicación a la ubicación deseada y busque la ID en la URL (es decir, si la URL es yahoocom / news / weather / germany / north-rhine-westphalia / bielefeld-20066057, la ID es 20066057).

El XML contiene más campos, es decir, datos de pronóstico, viento, etc. - también puede analizarlos, si lo desea.

Desafortunadamente, algunos símbolos meteorológicos no están representados en Ubuntufont ... siéntase libre de ajustar.

Aquí está mi script (reemplace 20066057 con su ID si no vive en Bielefeld), depende de bash, curl y xmllint.

#!/bin/sh
#☁☂☔❄❅❆☃ ☀☁☂⚡⚐☼

# write xml to variable
w_xml=$(curl -Ls "http://weather.tuxnet24.de/?id=20066057&mode=xml");
# get fields from xml via xmllint | xargs for trimming
# weather description
w_txt=$(xmllint --xpath "string(//current_text)" - <<<"$w_xml" | xargs);
# temperature | remove spaces from text (&#176;C prepended by space)
w_tpc=$(xmllint --xpath "string(//current_temp)"  - <<<"$w_xml" | xargs); w_tpc=${w_tpc//[[:blank:]]/};
# further fields not used atm
# w_tph=$(xmllint --xpath "string(//current_temp_high)"  - <<<"$w_xml" | xargs);
# w_tpl=$(xmllint --xpath "string(//current_temp_low)"  - <<<"$w_xml" | xargs);

# set $w_sym according to $w_txt
if   [ "$w_txt" == "Sunny" ]; then w_sym="☼";
elif [ "$w_txt" == "Mostly Sunny" ]; then w_sym="☼";
elif [ "$w_txt" == "Showers" ]; then w_sym="☂";
elif [ "$w_txt" == "Clear" ]; then w_sym="☾";
elif [ "$w_txt" == "Thunderstorms" ]; then w_sym="⚡";
elif [ "$w_txt" == "Scattered Thunderstorms" ]; then w_sym="☔";
elif [ "$w_txt" == "Isolated Thundershovers" ]; then w_sym="☔";
elif [ "$w_txt" == "Cloudy" ]; then w_sym="☁";
elif [ "$w_txt" == "Mostly Cloudy" ]; then w_sym="☁";
elif [ "$w_txt" == "Partly Cloudy" ]; then w_sym="☼☁";
elif [ "$w_txt" == "Breezy" ]; then w_sym="⚐";
# if unknown text, set text instead of symbol
else w_sym=$w_txt; 
fi
# output <symbol><space><temp-in-°C>
echo "$w_sym"" ""$w_tpc";
kai-dj
fuente
error inesperado de redirección
Philip Kirkbride
Cambiar shebang a #!/usr/bin/env basharreglado para mí, Ubuntu 18.04
Philip Kirkbride
2

Tengo un camino más.

Abra su archivo .bashrc y luego pegue este código en la parte inferior

test -f ~/.wttr.in || curl -sk wttr.in -o ~/.wttr.in
find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;
head -7 ~/.wttr.in | tail -5
W(){ find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;; head -27 ~/.wttr.in; }

Guarde y cierre su .bashrcarchivo y ejecute el siguiente comando para actualizar bash:

. .bashrc 

luego escriba Wmayúscula

sergkog
fuente
bash: W: comando no encontrado
Después de editar .bashrc relogin
sergkog
No tiene que volver a iniciar sesión si "obtiene" su .bashrcarchivo. Puede ejecutar: source .bashrco puede ejecutar esto en su lugar:. .bashrc
mchid
0

Aunque la solución accuweather curl es bastante buena, necesitaba algo más informativo, así que creé un script bash simple que extrae información para las próximas 4 horas del sitio web weather.com. Como en el ejemplo anterior, debe modificar el enlace para su ubicación.

Example output:
$ ./getWeather.sh
Temperature for 1 AM : 65&deg;F and outside should be: Partly - Cloudy FEELS LIKE:   65&deg;
Temperature for 2 AM : 65deg;F and outside should be: Partly - Cloudy FEELS LIKE: 65deg;
Temperature for 3 AM : 63deg; and outside should be: Partly - Cloudy FEELS LIKE: 63deg;
Temperature for 4 AM : 62deg; and should be: Mostly - Clear FEELS LIKE: 62deg;

La secuencia de comandos completa se encuentra en: https://sites.google.com/site/wozoopalinux/home/wzbash001/get-weather-information-from-command-line-for-next-4-hrs

wozoopa
fuente
0

Meteograma de todas las ciudades principales del mundo.

finger [email protected]

$ finger [email protected]

           -= Meteogram for germany/north_rhine-westphalia/cologne =-           
 'C                                                                   Rain
 16                                                                   
 15                           ^^^                                     
 14                  ======^^^   ^^^                                  
 13               ===               ^^^===^^^===                      
 12                                             =========             
 11            ===                                       ====--       
 10      ======                                                ---    
  9=====|                                                         --- 3 mm 
  8     |  |                                                          2 mm 
  7  |  |  |  |  |  |  |  |              |     |  |  |  |  |          1 mm 
   _08_09_10_11_12_13_14_15_16_17_18 19 20 21 22 23 00 01 02 03 04 05 Hour

    SE SE SE SE SE SW SW  W  W  W  W SW  W  W  W  W  W NW NW NW  N  N Wind dir.
     5  5  5  5  4  4  5  6  6  6  5  5  5  4  4  5  5  5  4  3  3  3 Wind(mps)

Legend left axis:   - Sunny   ^ Scattered   = Clouded   =V= Thunder   # Fog
Legend right axis:  | Rain    ! Sleet       * Snow
[Weather forecast from yr.no, delivered by the Norwegian Meteorological Institute and the NRK.]

Aquí está cómo usarlo:

$ finger [email protected]

yr.no is having technical problems, or you specified an unknown location.

Usage:

 * finger <city name>@graph.no (world weather forecast, no spaces)
   Example: finger [email protected] 

 Advanced usage:

 * finger o:<city name>@graph.no (a one-line forecast)
   Example: finger o:[email protected] 

 * finger ^<city name>@graph.no (Imperial units)
   Example: finger ^[email protected] 

 * finger <city name>[email protected] (forecast from 5 hrs ahead in time (max:26))
   Example: finger [email protected] 

 * finger <city name>[email protected] (set screen width)
   Example: finger [email protected] 

 * finger <city name>%[email protected] (forecast for every second hour [Norway])
   Example: finger oslo%[email protected] 

 * finger <post code>@graph.no (norwegian weather forecast)
   Example: finger [email protected] 

 Other: 

 * finger [email protected] (latest headlines from NRK)
 * finger [email protected] (server local time)
 * finger [email protected] (server local date)
 * finger [email protected] (contact information)

International names comes from http://fil.nrk.no/yr/viktigestader/verda.txt.

La historia detrás de esto del desarrollador.

Serge Stroobandt
fuente