Pogoda z terminalu


65

Chcę znaleźć aktualną pogodę w danym mieście lub mojej lokalizacji z terminala. Czy jest dostępna aplikacja pogodowa z wiersza poleceń?

Odpowiedzi:


134

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:

Próbka wyjściowa

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 .


2
O wiele lepiej!
— Zachary Dahan

2
github.com/schachmat/wego nie jest zły dla devsnas
— Timo

podoba się, ale tym razem zgłosił błąd: Przepraszamy, w tej chwili brakuje nam zapytań do serwisu pogodowego. Jak najszybciej otrzymamy nowe zapytania.
— Doyousketch2

17

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°

Ale jak mogę go zmienić na
— Celcjusza

Widzę w źródłowym pliku HTML 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 awkseparatorem pól jest „” (spacja). Czy $12(temperatura) jest 12. kolumną?
— Timo,

Moja wina, awkseparator jest '. Interfejs API używa 2 cyfr, pierwsza to postleitzahlkod pocztowy. Drugi wydaje się być kodem API
— Timo

1
Już nie działa, czy interfejs API Accuweather zmienił się?
— Timo

14

Mam jeszcze jeden sposób.

Otwórz .bashrcplik, 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 .bashrcplik.

teraz wpisz, bashaby zaktualizować plik.

następnie wpisz

weather <location name>

na przykład

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

1
Ładnie z prognozą pogody. +1 ode mnie
— souravc

To już nie działa, ostatnie daty, które pokazuje, pochodzą z maja 2015 r. (Przynajmniej dla Kapsztadu, Republika Południowej Afryki). Bliższe badanie danych wyjściowych xml ujawnia, że ​​rodzic txt_forecast nie został zaktualizowany od maja 2015 r., Podczas gdy element simpleforecast wydaje się mieć najnowsze dane.
— Zahir J

Zaktualizuję swoją odpowiedź
— rddʒɑ

Zamień YOUZIPORLOCATION na 1 USD, jeśli chcesz, aby pogoda <nazwa lokalizacji> działała
— Ed Neville

Kiedy wymienić YOUZIPORLOCATIONz $1i 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&amp;deg;C (89&amp;deg;F). Winds 43 kph East. Masz pomysł, dlaczego różnica?
— blalterman

14

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:

wprowadź opis zdjęcia tutaj


5
To jest teraz hostowane publicznie - z adresem IP do mapowania regionu. Spróbuj: curl -4 wttr.in
— jschrab

2
@jschrab: I tak naprawdę nie potrzebujesz -4. curl wttr.inwystarczy
— Igor Chubin

Jednostki metryczne są również dostępne w wersji hostowanej publicznie, na przykład:curl wttr.in/Helsinki?m
— Ville

6

Spróbuj użyć

telnet rainmaker.wunderground.com

1
To wydaje się być tylko w USA?
— Vladimir Panteleev

5

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ć weatherInformacje o pogodzie


1
pokazuje 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.
— Avinash Raj

W zależności od Twojej lokalizacji mogą to być bieżące dostępne informacje.
— Mitch

1
Właśnie próbowałem tego i odkryłem, że jest teraz łatwiejszy w użyciu: weather YOURLOCATIONNAMEwyszukuje 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
— Nicolas

Wygląda na to, że usługa, od której zależy, została wycofana. Właśnie zainstalowałem wersję 2.0 i 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
— Keith Thompson

1
Ten konkretny plik danych został przeniesiony z tego miejsca na tutaj . Powinna istnieć możliwość aktualizacji plików danych, zmieniając każde wystąpienie http://weather.noaa.gov/pub/datana 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 .
— Keith Thompson

5

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 ☔

https://github.com/fcambus/ansiweather


2

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

Wygląda na to, że inxi nie jest częścią Ubuntu od 10.04, ale można go zainstalować zsudo apt install inxi
— Starbuck

Tak, inxijest dostępny, ale najpierw musisz włączyć repozytorium wszechświata.
— mchid

2

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.intworzy również świetny ekran powitalny za każdym razem, gdy otwierasz terminal. Zrób to, dodając go do swojego ~/.bashrcpliku. 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?

Bash Splash w Windows 10.png

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.


2

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 (&#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";

nieoczekiwany błąd przekierowania
— Philip Kirkbride

Przełączam shebang na #!/usr/bin/env bashnaprawiony, Ubuntu 18.04
— Philip Kirkbride

2

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 .bashrcplik i uruchom następujące polecenie, aby zaktualizować bash:

. .bashrc 

następnie wpisz Wwielkie litery


bash: W: polecenie nie znaleziono

Po edycji .bashrc relogin
— sergkog

Nie musisz ponownie logować się, jeśli „źródło” .bashrcpliku. Możesz uruchomić: source .bashrclub zamiast tego możesz uruchomić:. .bashrc
— mchid

0

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

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


0

Meteogram wszystkich miast burmistrza na świecie

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.