Chcę znaleźć aktualną pogodę w danym mieście lub mojej lokalizacji z terminala. Czy jest dostępna aplikacja pogodowa z wiersza poleceń?
Chcę znaleźć aktualną pogodę w danym mieście lub mojej lokalizacji z terminala. Czy jest dostępna aplikacja pogodowa z wiersza poleceń?
Odpowiedzi:
Po prostu wprowadź następujące dane w terminalu:
curl wttr.in
I dostanie swoją lokalizację od /etc/timezone
. Inaczej curl wttr.in/your_location
. Na przykład w Teheranie:
curl wttr.in/tehran
Co daje ci:
Możesz także porównać dwa miasta:
diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )
Kod źródłowy programisty jest dostępny na Github .
devs
nas
Wyszukaj swoje miasto na stronie http://www.accuweather.com i zamień adres URL w poniższym skrypcie na adres URL swojego miasta:
#!/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
Przykładowe dane wyjściowe:
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"});
. Za pomocą kodu awk
separatorem pól jest „” (spacja). Czy $12
(temperatura) jest 12. kolumną?
awk
separator jest '
. Interfejs API używa 2 cyfr, pierwsza to postleitzahl
kod pocztowy. Drugi wydaje się być kodem API
Mam jeszcze jeden sposób.
Otwórz .bashrc
plik, a następnie wklej ten kod na dole
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"';}
Następnie zapisz i zamknij .bashrc
plik.
teraz wpisz, bash
aby zaktualizować plik.
następnie wpisz
weather <location name>
na przykład
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
z $1
i przekazać 20001
(Washington, DC ZIPCODE), otrzymuję linie, które wyglądają jak niesformatowany Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.
kiedy używam "washington.dc"
, mam wyjścia stołowego May 4, 2015: Clear. High 32&deg;C (89&deg;F). Winds 43 kph East
. Masz pomysł, dlaczego różnica?
Oto świetne pół graficzne narzędzie wiersza poleceń napisane w Go:
https://github.com/schachmat/wego/
Musisz zainstalować Go i skonfigurować kilka elementów API, ale instrukcje tam są. Oto przykładowe zdjęcie:
curl wttr.in
wystarczy
curl wttr.in/Helsinki?m
Najpierw musisz zainstalować pakiet pogodowy, aby to zrobić, po prostu naciśnij Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Kiedy się otworzy, uruchom poniższe polecenia:
sudo apt-get install weather-util
Będziesz potrzebował lokalnego kodu pogody .
Po instalacji możesz uruchomić weather -i <code>
. Kod otrzymany z linku powyżej. Aby wyświetlić listę dostępnych opcji, możesz uruchomić weather
Informacje o pogodzie
Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C)
. czy nie ma możliwości poznania aktualnej pogody.
weather YOURLOCATIONNAME
wyszukuje wtedy Twoją lokalizację i zapewnia prawdopodobnie wiele wyników. Z nich można odczytać identyfikator stacji, którego można użyć jako argumentu do pobrania informacji o pogodzie z
weather LAX
(która powinna pokazywać pogodę dla międzynarodowego lotniska w Los Angeles) pokazuje błąd 404 dla weather.noaa.gov/pub/data/observations/metar/decoded/KNKX.TXT
http://weather.noaa.gov/pub/data
na http://tgftp.nws.noaa.gov/data
. AKTUALIZACJA: Wygląda na to, że już to naprawili w wersji 2.1, którą można uzyskać ze strony projektu .
ansiweather
AnsiWeather to skrypt powłoki do wyświetlania aktualnych warunków pogodowych w twoim terminalu, z obsługą kolorów ANSI i symboli Unicode. Dane pogodowe pochodzą z darmowego API pogodowego 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 ☔
również program, który jest fabrycznie zainstalowany z Ubuntu o nazwie inxi, da ci wszystkie rodzaje statystyk na twoim komputerze i generuje dane pogodowe.
polecenie: inxi --help
polecenie: inxi -w
Conditions: 82 F (28 C) - Clear Time: May 13, 10:52 AM CDT
polecenie: 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
jest dostępny, ale najpierw musisz włączyć repozytorium wszechświata.
Możesz porównać miasta, używając:
diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )
zgodnie z ilustracją w najczęściej głosowanej odpowiedzi. wttr.in
tworzy również świetny ekran powitalny za każdym razem, gdy otwierasz terminal. Zrób to, dodając go do swojego ~/.bashrc
pliku. Zrobiłem to, aby uwzględnić informacje o pogodzie, dacie, godzinie i dystrybucji, jak szczegółowo opisano w tej odpowiedzi: Jak mogę uzyskać ten ekran powitalny terminalu?
Przepraszam, że byłem w Ubuntu w Windows 10 WSL dla aktualizacji Spring 2018, kiedy przechwyciłem ten obraz. Obiecuję, że wkrótce wrócę do Ubuntu w Linuksie.
Aby uzyskać jeszcze krótszą prognozę pogody, http://weather.tuxnet24.de zapewnia dane pogodowe z Yahoo! w formacie tekstowym i XML.
Filds z XML można następnie uzyskać za pomocą parsera XML, takiego jak xmllint, tj.
Napisałem skrypt pobierania i sprawdzania pogody, który pobiera bieżącą temperaturę i opis pogody, a następnie przechowuje symbol Unicode odpowiadający opisowi i wyprowadza go jak
☂ 6 ° C
Regularnie aktualizuję przez cronjob, a następnie używam danych wyjściowych w stanie na pasku zadań.
Zdobądź swój identyfikator na yahoocom / news / weather. Zmień lokalizację na żądaną lokalizację i poszukaj identyfikatora w adresie URL (tj. Jeśli adres URL to yahoocom / news / weather / germany / north-ren-westfalia / bielefeld-20066057, identyfikator to 20066057).
XML zawiera dalsze pola, tj. Dane prognozy, wiatr itp. - możesz je również parsować, jeśli chcesz.
Niestety niektóre symbole pogody nie są reprezentowane w Ubuntufont… możesz je dostosować.
Oto mój skrypt (zastąp 20066057 swoim ID, jeśli nie mieszkasz w Bielefeld) - zależy od bash, curl i 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
naprawiony, Ubuntu 18.04
Mam jeszcze jeden sposób.
Otwórz plik .bashrc, a następnie wklej ten kod na dole
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; }
Zapisz i zamknij .bashrc
plik i uruchom następujące polecenie, aby zaktualizować bash:
. .bashrc
następnie wpisz W
wielkie litery
.bashrc
pliku. Możesz uruchomić: source .bashrc
lub zamiast tego możesz uruchomić:. .bashrc
Chociaż rozwiązanie curl accuweather jest całkiem dobre, potrzebowałem czegoś bardziej informacyjnego, dlatego stworzyłem prosty skrypt bash, który pobiera informacje na następne 4 godziny ze strony weather.com. Tak jak w poprzednim przykładzie, musisz zmodyfikować link do swojej lokalizacji.
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;
Pełny skrypt znajduje się na stronie : 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.]
Oto jak z niego korzystać:
$ 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.
Historia za to od dewelopera.