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ń?

Avinash Raj
źródło

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 .

K-FIVE
źródło
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°
Florian Diesch
źródło
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
rɑːdʒɑ
źródło
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

jojo
źródło
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

źródło
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

Mitch
źródło
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

użytkownik782355
źródło
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
infinitim4tr1x
źródło
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.

WinEunuuchs2Unix
źródło
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";
kai-dj
źródło
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

sergkog
źródło
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

wozoopa
źródło
0

Meteogram wszystkich miast burmistrza na świecie

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

Oto jak z niego korzystać:

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

Historia za to od dewelopera.

Serge Stroobandt
źródło