Météo du terminal


66

Je souhaite connaître la météo actuelle d'une ville ou de ma position depuis le terminal. Existe-t-il une application météo en ligne de commande?

Réponses:


135

Entrez simplement les informations suivantes dans un terminal:

curl wttr.in

Et obtiendrez votre position à partir de /etc/timezone. Dans le cas contraire curl wttr.in/your_location. Par exemple, pour Téhéran:

curl wttr.in/tehran

Ce qui vous donne:

Échantillon de sortie

Vous pouvez également comparer deux villes:

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

Le code source du développeur est disponible sur Github .


2
Bien mieux!
Zachary Dahan

2
github.com/schachmat/wego n'est pas mauvais pour devsnous deux
Timo

mais cette fois-ci, une erreur est survenue: Désolé, nous n’avons plus de requêtes du service météo pour le moment. Nous aurons de nouvelles requêtes dès que possible.
Doyousketch2

17

Recherchez votre ville sur http://www.accuweather.com et remplacez l'URL dans le script suivant par l'URL de votre ville:

#!/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

Exemple de sortie:

Berlin, Germany: Foggy, 1°

Mais comment puis-je le changer en Celcius?
dat tutbrus

Dans le code source HTML, je vois 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"});. En utilisant votre code, le awkséparateur de champ est '' (espace). Est-ce que $12(température) est la 12ème colonne?
Timo

Ma faute, le awkséparateur est '. L'API utilise 2 chiffres, le premier est le postleitzahlcode postal. Le second semble être un numéro de code d'api
Timo

1
Ne fonctionne plus, l’API Accuweather a-t-elle changé?
Timo

14

J'ai un autre moyen.

Ouvrez votre .bashrcfichier puis collez ce code en bas

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"';}

Puis enregistrez et fermez votre .bashrcfichier.

tapez maintenant bashpour mettre à jour le fichier.

puis tapez

weather <location name>

par exemple

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

1
Nice avec prévisions météo. +1 de moi.
Souravc

Cela ne fonctionne plus, les dernières dates affichées datent de mai 2015 (pour Cape Town, au moins en Afrique du Sud). Un examen plus approfondi de la sortie xml révèle que le parent txt_forecast n'a pas été mis à jour depuis mai 2015, alors que l'élément simpleforecast semble disposer des données les plus récentes.
Zahir J


Remplacez YOUZIPORLOCATION par 1 $ si vous souhaitez que la météo <nom de l'emplacement> fonctionne
Ed Neville, le

Lorsque je remplace YOUZIPORLOCATIONpar $1et passe 20001(Washington, DC code postal), des lignes qui ne ressemblent pas au format Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.Lorsque je l’utilise "washington.dc", j’obtiens une sortie de tableau May 4, 2015: Clear. High 32&amp;deg;C (89&amp;deg;F). Winds 43 kph East. Une idée pourquoi la différence?
Blalterman le

14

Voici un excellent utilitaire de ligne de commande semi-graphique écrit en Go:

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

Vous devrez installer Go et configurer certains éléments de l'API, mais les instructions sont là. Voici un exemple de photo:

entrez la description de l'image ici


5
Ceci est actuellement hébergé publiquement - avec une correspondance adresse IP / région. Essayez: curl -4 wttr.in
jschrab

2
@ jschrab: Et vous n'avez pas besoin de -4 en fait. curl wttr.inest assez
Igor Chubin

Des unités métriques sont également disponibles sur la version hébergée publiquement, comme suit:curl wttr.in/Helsinki?m
Ville le

6

Essayez d'utiliser

telnet rainmaker.wunderground.com

1
Cela semble être uniquement aux États-Unis?
Vladimir Panteleev

5

Vous devez d’abord installer le paquet weather-util. Pour ce faire, appuyez simplement sur les touches Ctrl+ et Alt+ Tde votre clavier pour ouvrir Terminal. Lorsqu'il s'ouvre, exécutez les commandes ci-dessous:

sudo apt-get install weather-util

Vous aurez besoin de votre code météo local .

Après l'installation, vous pouvez exécuter weather -i <code>. Le code que vous obtenez à partir du lien ci-dessus. Pour obtenir une liste des options disponibles, vous pouvez exécuter weatherInfo météo.


1
cela montre qu'il Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C)n'y a aucun moyen de connaître le temps qu'il fait.
Avinash Raj

Selon votre emplacement, il pourrait s'agir des informations disponibles actuellement.
Mitch

1
Je viens d’essayer et de découvrir qu’il est maintenant plus facile à utiliser: weather YOURLOCATIONNAMEil recherche alors votre position et fournit éventuellement plusieurs résultats. Vous pouvez y lire l'identifiant de la station que vous pouvez utiliser comme argument pour récupérer vos informations météo
Nicolas

Il semble que le service dont il dépend a été interrompu. Je viens d'installer la version 2.0 et weather LAX(qui devrait indiquer le temps qu'il fera à l'aéroport international de Los Angeles) affiche une erreur 404 pour weather.noaa.gov/pub/data/observations/metar/decoded/KNKX.TXT
Keith Thompson

1
Ce fichier de données particulier a été déplacé d’ ici à ici . Il devrait être possible de mettre à jour les fichiers de données en modifiant chaque occurrence de http://weather.noaa.gov/pub/datato http://tgftp.nws.noaa.gov/data. UPDATE: On dirait qu'ils l'ont déjà corrigée dans la version 2.1, que vous pouvez obtenir à partir du site du projet .
Keith Thompson le

5

ansiweather

AnsiWeather est un script Shell permettant d'afficher les conditions météorologiques actuelles sur votre terminal, avec prise en charge des couleurs ANSI et des symboles Unicode. Les données météorologiques proviennent de l'API météo gratuite d'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


2

De plus, un programme pré-installé avec Ubuntu appelé Inxi vous fournira tous les types de statistiques sur votre ordinateur et produira une sortie météo.

commande: inxi --help

commande: inxi -w

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

commande: 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

Apparemment, inxi ne fait pas partie d'ubuntu, à partir du 10.04, mais peut être installé avecsudo apt install inxi
Starbuck

Oui, inxiest disponible mais vous devez d'abord activer le référentiel de l'univers.
mardi

2

Vous pouvez comparer les villes en utilisant:

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

comme illustré dans la réponse la plus votée. wttr.infait également un grand écran "splash" chaque fois que vous ouvrez le terminal. Faites cela en l'ajoutant à votre ~/.bashrcfichier. Je l'ai fait pour inclure les informations sur la météo, la date, l'heure et la distribution, comme indiqué dans cette réponse: Comment puis-je obtenir cet écran de démarrage du terminal?

Bash Splash dans Windows 10.png

Désolé, j'étais dans Ubuntu dans Windows 10 WSL pour les mises à jour du printemps 2018 lorsque j'ai capturé cette image. Promis, je vais bientôt redémarrer Ubuntu sous Linux.


2

Pour des résultats météorologiques encore plus courts, http://weather.tuxnet24.de fournit des données météorologiques de Yahoo! au format texte et xml.

Les filds du XML peuvent ensuite être obtenus avec un analyseur XML tel que xmllint ie.

J’ai écrit un script d’extension météo q & d, qui récupère la température actuelle et la description de la météo, puis stocke un symbole Unicode correspondant à la description et l’affiche comme

☂ 6 ° C

Je mets régulièrement à jour via cronjob puis utilise la sortie dans l'état de ma barre d'état.

Obtenez votre identifiant sur yahoocom / news / weather. Modifiez l'emplacement à l'emplacement souhaité et recherchez l'ID dans l'URL (par exemple, si l'URL est yahoocom / news / weather / allemagne / rhénanie-du-nord-westphalie / bielefeld-20066057 l'ID est 20066057).

Le code XML contient d’autres champs, tels que les données de prévision, le vent, etc. - vous pouvez également les analyser, si vous le souhaitez.

Malheureusement, certains symboles météorologiques ne sont pas représentés dans Ubuntufont… n'hésitez pas à vous ajuster.

Voici mon script (remplace 20066057 par votre identifiant si vous n'habitez pas à Bielefeld) - dépend de bash, curl et 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";

erreur inattendue de redirection
Philip Kirkbride

Basculer en mode #!/usr/bin/env bashfixe pour moi, Ubuntu 18.04
Philip Kirkbride

2

J'ai un autre moyen.

Ouvrez votre fichier .bashrc puis collez ce code en bas

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; }

Enregistrez et fermez votre .bashrcfichier et exécutez la commande suivante pour mettre à jour bash:

. .bashrc 

puis tapez Wmajuscule


bash: W: commande non trouvée

Après la modification .bashrc relogin
sergkog

Vous n'avez pas besoin de vous reconnecter si vous "sourcez" votre .bashrcfichier. Vous pouvez exécuter: source .bashrcou vous pouvez exécuter ceci à la place:. .bashrc
mchid

0

Bien que la solution d'accuweather curl soit assez bonne, j'avais besoin de quelque chose de plus informatif. J'ai donc créé un script bash simple qui extrait les informations des 4 prochaines heures sur le site Web weather.com. Comme dans l'exemple précédent, vous devez modifier le lien pour votre emplacement.

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;

Le script complet se trouve à l' adresse suivante : https://sites.google.com/site/wozoopalinux/home/wzbash001/get-weather-information-from-command-line-for-next-4-hrs.


0

Météogramme de toutes les maires du monde

finger city_name@graph.no

$ finger cologne@graph.no

           -= 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.]

Voici comment l'utiliser:

$ finger help@graph.no

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 newyork@graph.no 

 Advanced usage:

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

 * finger ^<city name>@graph.no (Imperial units)
   Example: finger ^newyork@graph.no 

 * finger <city name>+5@graph.no (forecast from 5 hrs ahead in time (max:26))
   Example: finger northpole+5@graph.no 

 * finger <city name>~160@graph.no (set screen width)
   Example: finger southpole~160@graph.no 

 * finger <city name>%2@graph.no (forecast for every second hour [Norway])
   Example: finger oslo%2@graph.no 

 * finger <post code>@graph.no (norwegian weather forecast)
   Example: finger 0458@graph.no 

 Other: 

 * finger news@graph.no (latest headlines from NRK)
 * finger time@graph.no (server local time)
 * finger date@graph.no (server local date)
 * finger about@graph.no (contact information)

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

L' histoire derrière cela du développeur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.