Wetter in der BASH

wttr.in

Als Keller-Homeoffice Arbeiter braucht man ab und mal das aktuelle Wetter in der BASH. Genau dazu gibt es ein hervorragendes Werkzeug mit Zusatzfunktionen. Ich schreibe hier von wttr.in, das Wetter Tool für die Kommandozeile.

Wetter in der BASH

Genau genommen gibt es eigentlich nicht wirklich was zu installieren. Schließlich möchte man das aktuelle Wetter haben, dazu braucht es eh eine laufende Internetanbindung. Also nutzt man eigentlich nur den Online Dienst und fragt genau das, in der gewünschten Form und für den anzuzeigenden Ort an. Das ist erst mal denkbar einfach:

$ curl wttr.in

Für Windows Benutzer

In der PowerShell kann wttr.in mit dem Befehl Invoke-RestMethod http://wttr.in genutzt werden.

Die Ausgabe zeigt nun erst einmal das Wetter für einen Default Ort und in einem Standard Format. Natürlich kann man das nach den eigenen Wünschen anpassen.

Installation

Im weiteren verlauf des Beitrags halte ich mich an die öffentliche Version unter wttr.in. Wer sich das System auf einem eigenen Server installieren möchte findet auf GitHub eine ausführliche Beschreibung.

Wetter im Browser

Der Beitrag heißt Wetter in der BASH und jetzt kommt der CrazyMaker mit dem Browser um die Ecke? Das ist ganz einfach erklärt:

Wie in dem vorhergehenden Beispiel zu sehen ist greifen wir mit curl auf eine Webseite zu. Diese Webseite kann man auch im Browser aufrufen! Und das spannende ist du hast die Möglichkeit alles was ich im folgenden vorstelle auch in der URL Zeile des Browser zu testen. Warum das funktioniert erklärt der Abschnitt über die möglichen Ausgabeformate.

Also können alle Beispiele die im folgenden auf den curl Befehl folgen auch so im Browser eingegeben werden.

wttr.in im Browser

Parameter

Location

Wenn du die Wetterinformationen zu einem bestimmten Ort haben möchtest kannst du das machen indem du wie folgt vorgehst:

$ curl wttr.in/Berlin
$ curl wttr.in/Moscow
$ curl wttr.in/Salt+Lake+City

Wenn du keinen Ort angibst wird anhand der IP Adresse versucht deinen Standort festzulegen.

Zur Auswahl der Lokation kannst du auch die 3-stelligen Flughafen Codes nutzen:

$ curl wttr.in/muc # Weather for IATA: muc, Munich International Airport, Germany
$ curl wttr.in/ham # Weather for IATA: ham, Hamburg Airport, Germany

Lass uns mal annehmen das du nicht das Wetter für einen Lokation wie einem Ort oder eine Stadt haben möchtest sondern für eine Sehenswürdigkeit oder einen Berg, dann kannst du auch das angeben indem du eine ~ vor die Bezeichnung stellst.

$ curl wttr.in/~Brocken
$ curl wttr.in/~Siegessäule
$ curl wttr.in/~Hamburg+Hafen

Für alle diese Beispiele wird unterhalb der Wettervorhersage eine Zeile mit der genauen Ortsangabe angezeigt:

Location: Brocken, Wernigerode, Landkreis Harz, Sachsen-Anhalt, Deutschland, Europe [51.7991251,10.6156365]
Location: Siegessäule, Großer Stern, Botschaftsviertel, Tiergarten, Mitte, Berlin, 10785, Deutschland [52.51450815,13.350110811262352]
Location: Der Hafen, Lüneburger Straße, Harburg, Hamburg, 21073, Deutschland [53.4586423,9.9825355]

Die genauste Wetterposition kannst du mit Geokoordinaten erreichen:

$ curl wttr.in/52.3760750443854, 9.734687488754966

Das ist zum Beispiel die Koordinate für:

Ort: Kumkapi, 8, Kanalstraße, Altstadt, Mitte, Hannover, Region Hannover, Niedersachsen, 30159, Deutschland [52.3761424,9.734992]

Für genauere Hilfe kannst du auch die Hilfeseite aufrufen:

$ curl wttr.in/:help

Maßeinheiten

Standartmäßig werden für die Angabe der Messgrößen für Anfragen aus den USA due USCS Einheiten und für Anfragen aus dem Rest der Welt metrische Angaben verwendet. Du kannst diese Verhalten beeinflussen indem du mit den Parametern ?u oder ?m dieses Verhalten übersteuerst.

$ curl wttr.in/Amsterdam?u
$ curl wttr.in/Amsterdam?m

Unterstützte Ausgabe- bzw. Anzeigeformate

wttr.in unterstützt im Augenblich die Nachfolgenden Formate:

ANSI – für Terminal Ausgaben;
Plain-text – für die Ausgabe auf Terminals oder Scripte;
HTML – für den Browser;
PNG – für die Grafische Anzeige;
JSON – für Scripte oder APIs;
Prometheus metrics – für Scripte oder APIs.

Das ANSI oder HTML Format werden automatisch je nach User-Agent String ausgewählt.

Um Plain-text ohne Farben zu erzwingen verwende den Parameter ?T.

$ curl wttr.in/?T

Das PNG Format kann erzwungen werden indem einfach .png an die Anfrage angehängt wird:

$ wget wttr.in/Paris.png

Du kannst alle Optionen mit dem PNG Format wie in einer URL benutzen. Du musst nur die ? und & von URLs durch ein _ (Underline) erstzen:

$ wget wttr.in/Paris_0tqp_lang=fr.png # Dazu später mehr

Nützliche Optionen für PNGs

t für Transparenz (Transparenz=150);
Transparenz=0..255 für einen individuellen Transparenz Wert.

Transparenz ist eine nützliche Angabe wenn das Generierte PNG in ein Bild eingebunden werden soll:

$ convert Wiesbaden_Kurhaus.jpg &lt;( curl http://wttr.in/Wiesbaden_0qp_lang=de_transparency=200.png ) -geometry +25+25 -composite tar<br>get.jpg

So wird in diesem Beispiel aus dem Bild des Wiesbadener Kurhauses ein Bild mit Wettereinblendung.

Wiesbaden Kurhaus
Wiesbaden Kurhaus
Wiesbaden Kurhaus mit Wetter
Wiesbaden Kurhaus mit Wetter

Einzeilige Ausgabe

Für die einzeilige Ausgabe muss einfach ein weiterer Parameter angegeben werden:

$ curl wttr.in/Nuremberg?format=3
Nuremberg: 🌦 +11⁰C

Verfügbare, vor konfigurierte Ausgabeprofile sind 1,2,3 und 4 oder du verwendest das benutzerdefinierte Format mit Prozent-Notation (siehe unten).

Du kannst auch mehrere Orte angeben für wiederholte Abfragen, mit jedem Aufruf wird ein weiterer Ort der Liste abgefragt:

$ curl wttr.in/Nuremberg:Hamburg:Berlin?format=3
Nuremberg: 🌦 +11⁰C<br>

Oder um gleich alles in einer Abfrage zumachen nutze das nachfolgende Muster:

$ curl -s 'wttr.in/{Nuremberg,Hamburg,Berlin}?format=3'
Nuremberg: 🌦 +11⁰C
Hamburg: 🌦 +8⁰C
Berlin: 🌦 +8⁰C

Um dein eigenes Ausgabeformat darzustellen kannst du die %-Notation verwenden (Ich habe hier die Hilfe bewusst nicht übersetzt un im Original belassen):

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),

D    Dawn*,
S    Sunrise*,
z    Zenith*,
s    Sunset*,
d    Dusk*,
T    Current time*,
Z    Local timezone.

(*Zeiten werden immer mit der lokalen Zeitzone ausgegebene)

Die beiden nachfolgenden Beispiele erzeugen die selbe Ausgabe:

$ curl wttr.in/London?format=3
London: ⛅️ +7⁰C
$ curl wttr.in/London?format="%l:+%c+%t\n"
London: ⛅️ +7⁰C

Weitere Informationen zu wttr.in

Wenn du noch weitere Informationen zu möglichen Parametern oder experimentellen Features brauchst kannst du auf der Projektseite von wttr.in alles weitere nachlesen.

Author: Lord CrazyMaker

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.