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?

Avinash Raj
la source

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 .

K-CINQ
la source
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°
Florian Diesch
la source
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
rɑːdʒɑ
la source
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
Je
mettrai à
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

jojo
la source
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

la source
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.

Mitch
la source
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

utilisateur782355
la source
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
infinitim4tr1x
la source
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.

WinEunuuchs2Unix
la source
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";
kai-dj
la source
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

sergkog
la source
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.

wozoopa
la source
0

Météogramme de toutes les maires du monde

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

Voici comment l'utiliser:

$ 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.

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

Serge Stroobandt
la source