Ich möchte das aktuelle Wetter einer bestimmten Stadt oder meinen Standort vom Terminal aus ermitteln. Gibt es eine Kommandozeilen-Wetter-App?
Ich möchte das aktuelle Wetter einer bestimmten Stadt oder meinen Standort vom Terminal aus ermitteln. Gibt es eine Kommandozeilen-Wetter-App?
Antworten:
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:
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 .
devs
zwischen uns
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°
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 awk
Feldtrennzeichen '' (Leerzeichen). Ist $12
(Temperatur) die 12. Spalte?
awk
Trennzeichen '
. Die API verwendet 2 Zahlen, die erste ist die postleitzahl
Postleitzahl oder. Die zweite scheint eine API-Code-Nummer zu sein
Ich habe noch einen Weg.
Öffnen Sie Ihre .bashrc
Datei 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 .bashrc
Datei.
bash
Geben 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&deg;C (87&deg;F). Winds 0 kph North
December 15, 2013: Clear. High 29&deg;C (84&deg;F). Winds 10 kph NNW
December 16, 2013: Clear. High 31&deg;C (87&deg;F). Winds 10 kph North
December 17, 2013: Clear. High 29&deg;C (84&deg;F). Winds 7 kph ENE
December 18, 2013: Scattered Clouds. High 29&deg;C (84&deg;F). Winds 3 kph ENE
December 19, 2013: Scattered Clouds. High 29&deg;C (84&deg;F). Winds 3 kph ENE
YOUZIPORLOCATION
mit $1
und 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&deg;C (89&deg;F). Winds 43 kph East
. Irgendeine Idee, warum der Unterschied?
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:
curl wttr.in
ist genug
curl wttr.in/Helsinki?m
Versuchen Sie es mit
telnet rainmaker.wunderground.com
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
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.
weather YOURLOCATIONNAME
Es 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
weather LAX
(die das Wetter für den Los Angeles International Airport anzeigen sollte
http://weather.noaa.gov/pub/data
auf 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 .
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 ☔
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
sudo apt install inxi
inxi
ist verfügbar, aber Sie müssen zuerst das Universums-Repository aktivieren.
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.in
Außerdem wird jedes Mal, wenn Sie das Terminal öffnen, ein großartiger Begrüßungsbildschirm angezeigt. Fügen Sie dies zu Ihrer ~/.bashrc
Datei 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?
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.
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 (°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";
#!/usr/bin/env bash
Ich habe Shebang auf Fixed umgestellt, Ubuntu 18.04
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 .bashrc
Datei und führen Sie den folgenden Befehl aus, um bash zu aktualisieren:
. .bashrc
Geben Sie dann W
Großbuchstaben ein
.bashrc
Datei als "Quelle" angeben . Sie können ausführen: source .bashrc
oder Sie können dies stattdessen . .bashrc
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°F and outside should be: Partly - Cloudy FEELS LIKE: 65°
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
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.]
So verwenden Sie es:
$ 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.
Die Geschichte dahinter vom Entwickler.