Wetter vom Terminal

66

Ich möchte das aktuelle Wetter einer bestimmten Stadt oder meinen Standort vom Terminal aus ermitteln. Gibt es eine Kommandozeilen-Wetter-App?

Avinash Raj
quelle

Antworten:

135

Geben Sie einfach Folgendes in ein Terminal ein:

curl wttr.in

Und erhalten Sie Ihren Standort von /etc/timezone. Sonst curl wttr.in/your_location. Zum Beispiel für Teheran:

curl wttr.in/tehran

Welches gibt Ihnen:

Beispielausgabe

Sie können auch zwei Städte vergleichen:

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

Der Quellcode des Entwicklers ist auf Github verfügbar .

K-FIVE
quelle
2
Viel besser!
Zachary Dahan
2
github.com/schachmat/wego ist nicht schlecht für die devszwischen uns
Timo
gefällt mir, aber diesmal ist ein Fehler aufgetreten: Es tut uns leid, wir haben im Moment keine Anfragen mehr an den Wetterdienst. Wir werden so schnell wie möglich neue Anfragen erhalten.
Doyousketch2
17

Suchen Sie unter http://www.accuweather.com nach Ihrer Stadt und ersetzen Sie die URL im folgenden Skript durch die URL für Ihre Stadt:

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

Beispielausgabe:

Berlin, Germany: Foggy, 1°
Florian Diesch
quelle
Aber wie ändere ich es auf Celcius
dat tutbrus
In der Quell-HTML sehe ich 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"});. Mit Ihrem Code ist das awkFeldtrennzeichen '' (Leerzeichen). Ist $12(Temperatur) die 12. Spalte?
Timo
Mein Fehler ist das awkTrennzeichen '. Die API verwendet 2 Zahlen, die erste ist die postleitzahlPostleitzahl oder. Die zweite scheint eine API-Code-Nummer zu sein
Timo
1
Funktioniert nicht mehr, hat sich die Accuweather-API geändert?
Timo
14

Ich habe noch einen Weg.

Öffnen Sie Ihre .bashrcDatei und fügen Sie diesen Code unten ein

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

Speichern und schließen Sie dann Ihre .bashrcDatei.

bashGeben Sie nun ein , um die Datei zu aktualisieren.

dann tippe

weather <location name>

zum Beispiel

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ʒɑ
quelle
1
Schön mit Wettervorhersage. +1 von mir.
Souravc
Dies funktioniert nicht mehr, die letzten Daten stammen aus dem Mai 2015 (mindestens für Kapstadt, Südafrika). Eine genauere Untersuchung der XML-Ausgabe zeigt, dass das übergeordnete Element "txt_forecast" seit Mai 2015 nicht aktualisiert wurde, während das simpleforecast-Element anscheinend über die neuesten Daten verfügt.
Zahir J
Ich werde meine Antwort aktualisieren
Dienstag,
Ersetzen Sie YOUZIPORLOCATION durch $ 1, wenn Wetter <Ortsname> funktionieren soll
Ed Neville
Beim Ersetzen YOUZIPORLOCATIONmit $1und 20001Übergeben (Postleitzahl von Washington, DC) erhalte ich Zeilen, die unformatiert aussehen. Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.Wenn ich sie verwende "washington.dc", erhalte ich eine Tabellenausgabe May 4, 2015: Clear. High 32&amp;deg;C (89&amp;deg;F). Winds 43 kph East. Irgendeine Idee, warum der Unterschied?
Blalterman
14

Hier ist ein großartiges semigrafisches Befehlszeilenprogramm, das in Go geschrieben wurde:

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

Sie müssen Go installieren und einige API-Komponenten einrichten, aber die Anweisungen finden Sie dort. Hier ist ein Beispielbild:

Bildbeschreibung hier eingeben

jojo
quelle
5
Dies wird jetzt öffentlich gehostet - mit Zuordnung von IP-Adresse zu Region. Versuchen Sie: locken -4 wttr.in
jschrab
2
@jschrab: Und du brauchst eigentlich kein -4. curl wttr.inist genug
Igor Chubin
Metrische Einheiten sind auch in der öffentlich gehosteten Version verfügbar, z. B .:curl wttr.in/Helsinki?m
Ville,
6

Versuchen Sie es mit

telnet rainmaker.wunderground.com

quelle
1
Dies scheint nur in den USA zu sein?
Vladimir Panteleev
5

Zuerst müssen Sie das Weather-Util-Paket installieren. Drücken Sie dazu einfach Ctrl+ Alt+ Tauf Ihrer Tastatur, um das Terminal zu öffnen. Führen Sie beim Öffnen die folgenden Befehle aus:

sudo apt-get install weather-util

Sie benötigen Ihren lokalen Wettercode .

Nach der Installation können Sie ausführen weather -i <code>. Den Code erhalten Sie über den obigen Link. Für eine Liste der verfügbaren Optionen können Sie Wetterinformationen ausführenweather

Mitch
quelle
1
Es zeigt, dass Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C)es keine Möglichkeit gibt, das aktuelle Wetter zu bestimmen.
Avinash Raj
Abhängig von Ihrem Standort kann dies die aktuelle Information sein, die verfügbar ist.
Mitch
1
Ich habe es gerade ausprobiert und festgestellt, dass es jetzt einfacher zu verwenden ist: weather YOURLOCATIONNAMEEs sucht dann nach Ihrem Standort und liefert möglicherweise mehrere Ergebnisse. Daraus können Sie die Stationskennung ablesen, mit der Sie Ihre Wetterinformationen abrufen können
Nicolas
Es sieht so aus, als ob der Dienst, von dem es abhängt, eingestellt wurde. Ich habe gerade die Version 2.0 installiert und weather LAX(die das Wetter für den Los Angeles International Airport anzeigen sollte
Keith Thompson,
1
Diese bestimmte Datendatei wurde von hier nach hier verschoben . Es sollte möglich sein, die Datendateien zu aktualisieren, indem jedes Vorkommen von http://weather.noaa.gov/pub/dataauf geändert wird http://tgftp.nws.noaa.gov/data. UPDATE: Sieht so aus, als hätten sie es bereits in Version 2.1 behoben, die Sie von der Projektsite erhalten können .
Keith Thompson
5

ansiweather

AnsiWeather ist ein Shell-Skript zur Anzeige der aktuellen Wetterbedingungen in Ihrem Terminal, das ANSI-Farben und Unicode-Symbole unterstützt. Wetterdaten stammen von der kostenlosen OpenWeatherMap-Wetter-API.

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

user782355
quelle
2

Ein mit Ubuntu vorinstalliertes Programm namens inxi gibt alle Arten von Statistiken auf Ihrem Computer aus und gibt das Wetter aus.

Befehl: inxi --help

Befehl: inxi -w

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

Befehl: 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
quelle
Scheint, dass inxi seit 10.04 nicht mehr Teil von Ubuntu ist, sondern mitsudo apt install inxi
Starbuck
Ja, inxiist verfügbar, aber Sie müssen zuerst das Universums-Repository aktivieren.
17.
2

Sie können Städte vergleichen mit:

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

wie in der am besten bewerteten Antwort dargestellt. wttr.inAußerdem wird jedes Mal, wenn Sie das Terminal öffnen, ein großartiger Begrüßungsbildschirm angezeigt. Fügen Sie dies zu Ihrer ~/.bashrcDatei hinzu. Ich habe dies getan, um Informationen zu Wetter, Datum, Uhrzeit und Verteilung aufzunehmen, wie in der folgenden Antwort beschrieben: Wie kann ich diesen Begrüßungsbildschirm des Terminals abrufen?

Bash Splash in Windows 10.png

Entschuldigung, ich war in Ubuntu in Windows 10 WSL für Frühjahr 2018-Updates, als ich dieses Bild aufgenommen habe. Ich verspreche, bald wieder Ubuntu unter Linux zu starten.

WinEunuuchs2Unix
quelle
2

Für eine noch kürzere Wetterausgabe bietet http://weather.tuxnet24.de Wetterdaten von Yahoo! im text- und xml-format.

Die Felder aus dem XML können dann mit einem XML-Parser wie xmllint erhalten werden, dh.

Ich habe ein Q & D-Wetter-Abruf-Skript geschrieben, das die aktuelle Temperatur und Beschreibung des Wetters abruft, dann ein Unicode-Symbol entsprechend der Beschreibung speichert und es wie folgt ausgibt

≤ 6 ° C

Ich aktualisiere regelmäßig per Cronjob und verwende dann die Ausgabe in meinem Tray-Status.

Holen Sie sich Ihren Ausweis unter yahoocom / news / weather. Ändern Sie den Ort zu Ihrem gewünschten Ort und suchen Sie die ID in der URL (dh wenn die URL yahoocom / news / wetter / deutschland / nordrhein-westfalen / bielefeld-20066057 lautet, lautet die ID 20066057).

Die XML enthält weitere Felder, dh Prognosedaten, Wind usw. - Sie können sie auch analysieren, wenn Sie möchten.

Leider sind einige Wettersymbole im Ubuntufont nicht dargestellt.

Hier ist mein Skript (ersetzen Sie 20066057 durch Ihre ID, wenn Sie nicht in Bielefeld leben) - abhängig von Bash, Curl und 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
quelle
Unerwarteter Fehler bei der Umleitung
Philip Kirkbride
#!/usr/bin/env bashIch habe Shebang auf Fixed umgestellt, Ubuntu 18.04
Philip Kirkbride
2

Ich habe noch einen Weg.

Öffnen Sie Ihre .bashrc-Datei und fügen Sie diesen Code unten ein

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

Speichern und schließen Sie Ihre .bashrcDatei und führen Sie den folgenden Befehl aus, um bash zu aktualisieren:

. .bashrc 

Geben Sie dann WGroßbuchstaben ein

Sergkog
quelle
Bash: W: Befehl nicht gefunden
Nach der Bearbeitung .bashrc relogin
sergkog
Sie müssen sich nicht erneut anmelden, wenn Sie Ihre .bashrcDatei als "Quelle" angeben . Sie können ausführen: source .bashrcoder Sie können dies stattdessen . .bashrc
ausführen
0

Obwohl accuweather curl solution ziemlich gut ist, brauchte ich etwas mehr Information, also habe ich ein einfaches Bash-Skript erstellt, das Informationen für die nächsten 4 Stunden von der weather.com-Website abruft. Wie im vorherigen Beispiel müssen Sie den Link für Ihren Standort ändern.

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;

Das vollständige Skript finden Sie unter: https://sites.google.com/site/wozoopalinux/home/wzbash001/get-weather-information-from-command-line-for-next-4-hrs

Wozoopa
quelle
0

Meteogramm aller Hauptstädte der Welt

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

So verwenden Sie es:

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

Die Geschichte dahinter vom Entwickler.

Serge Stroobandt
quelle