Погода від терміналу


65

Я хочу дізнатися поточну погоду в конкретному місті чи моєму місці з терміналу. Чи є в командному рядку додаток погоди?

Відповіді:


134

Просто введіть у термінал наступне:

curl wttr.in

І отримає ваше місцезнаходження /etc/timezone. Інакше curl wttr.in/your_location. Наприклад, для Тегерану:

curl wttr.in/tehran

Що дає вам:

Вибірка зразка

Ви також можете порівняти два міста:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

Вихідний код розробника доступний на Github .


2
Шлях набагато краще!
Захарій Дахан

2
github.com/schachmat/wego непогано для devsнас
Тимо

сподобалось, але цього разу воно призвело до помилки: На жаль, у нас не вистачає запитів до метеослужби. Ми отримаємо нові запити якнайшвидше.
Doyousketch2

17

Шукайте своє місто за адресою http://www.accuweather.com та замініть URL-адресу в наступному сценарії на URL-адресу для вашого міста:

#!/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

Вибірка зразка:

Berlin, Germany: Foggy, 1°

Але як я можу змінити це на Цельсія
дат тютбрус

У вихідному 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"});. Використовуючи свій код, awkроздільником поля є "" (пробіл). Це $12(температура) 12-й стовпчик?
Тимо

Моя вина, awkсепаратор '. У api використовується 2 числа, перший - postleitzahlабо поштовий індекс. Другим, здається, є кодовий номер api
Тимо

1
Більше не працює, змінився API Accuweather?
Тимо

14

У мене є ще один спосіб.

Відкрийте .bashrcфайл і вставте цей код внизу

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"';}

Потім збережіть і закрийте .bashrcфайл.

тепер введіть, bashщоб оновити файл.

потім введіть

weather <location name>

наприклад

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
Приємно з прогнозом погоди. +1 від мене.
souravc

Це більше не працює, останні дати, які він показує, - це травень 2015 року (як мінімум для Кейптаун, Південна Африка). Більш детальне вивчення виводу xml виявляє, що батьківський txt_forecast не оновлювався з травня 2015 року, хоча елемент Simpleforecast, здається, має останні дані.
Захір J


Замініть YOUZIPORLOCATION на $ 1, якщо ви хочете, щоб погода <ім'я місцезнаходження> працювала
Ед Невіл

Коли я заміню YOUZIPORLOCATIONз $1і передати 20001(Вашингтон, округ Колумбія ZipCode), я отримую рядки , які виглядають як неформатований Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.Коли я використовую "washington.dc", я отримую вихід таблиці May 4, 2015: Clear. High 32&amp;deg;C (89&amp;deg;F). Winds 43 kph East. Будь-яка ідея, чому різниця?
blalterman

14

Ось чудова напів графічна утиліта командного рядка, написана на Go:

https://github.com/schachmat/wego/

Вам потрібно буде встановити Go і налаштувати деякі матеріали API, але інструкції є. Ось зразок малюнка:

введіть тут опис зображення


5
Зараз це публічно розміщено - із IP-адресою для відображення регіону. Спробуйте: curl -4 wttr.in
jschrab

2
@jschrab: І вам фактично не потрібно -4. curl wttr.inдостатньо
Ігор Чубін

Метричні одиниці також доступні у публічно розміщеній версії, наприклад:curl wttr.in/Helsinki?m
Ville


5

Спочатку вам потрібно встановити пакунок погоди-утиліти, для цього просто натисніть Ctrl+ Alt+ Tна клавіатурі, щоб відкрити термінал. Коли він відкриється, запустіть команди (и) нижче:

sudo apt-get install weather-util

Вам знадобиться ваш місцевий погодний код .

Після установки можна запустити weather -i <code>. Код, який ви отримуєте за посиланням вище. Для переліку доступних опцій можна запустити weatherінформацію про погоду


1
це показує Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C). чи немає способу дізнатися поточну погоду.
Авінаш Радж

Залежно від вашого місцезнаходження, яка може бути поточна інформація, яка доступна.
Мітч

1
Я тільки що спробував це і виявив, що зараз його простіше використовувати: weather YOURLOCATIONNAMEвін шукає ваше місцезнаходження і надає, можливо, декілька результатів. З них ви можете прочитати ідентифікатор станції, який ви можете використовувати як аргумент, щоб отримати інформацію про погоду з
Ніколас

Схоже, послуга, від якої залежить, була припинена. Щойно я встановив версію 2.0, і weather LAX(яка повинна показувати погоду в міжнародному аеропорту Лос-Анджелеса) відображається помилка 404 для weather.noaa.gov/pub/data/observation/metar/decoded/KNKX.TXT
Кіт Томпсон,

1
Цей конкретний файл даних перемістився звідси і сюди . Має бути можливість оновити файли даних, змінюючи кожне виникнення http://weather.noaa.gov/pub/dataна http://tgftp.nws.noaa.gov/data. ОНОВЛЕННЯ: Схоже, вони вже виправили версію 2.1, яку ви можете отримати на сайті проекту .
Кіт Томпсон

5

ansiweather

AnsiWeather - це сценарій Shell для відображення поточних погодних умов у вашому терміналі з підтримкою кольорів ANSI та символів Unicode. Дані про погоду надходять із вільного API погоди OpenpointMap.

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

також програма, яка попередньо встановлена ​​з ubuntu під назвою inxi, дасть вам всі типи статистики на вашому комп’ютері, і вона робить вихід погоди.

команда: inxi --help

команда: inxi -w

        Conditions: 82 F (28 C) - Clear Time: May 13, 10:52 AM CDT

команда: 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

Здається, що інксі не є частиною ubuntu станом на 10.04, але його можна встановити за допомогоюsudo apt install inxi
Starbuck

Так, inxiдоступно, але вам потрібно спочатку включити всесвітнє сховище.
mchid

2

Можна порівняти міста, використовуючи:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

як показано у відповіді на голосування. wttr.inтакож робить чудовий "плескіт" екран щоразу, коли ви відкриваєте термінал. Зробіть це, додавши його у свій ~/.bashrcфайл. Я зробив це, щоб включити інформацію про погоду, дату, час та розподіл, як це детально описано у цій відповіді: Як я можу отримати цей сплеск екрану терміналу?

Bash Splash у Windows 10.png

На жаль, я потрапив в Ubuntu в Windows 10 WSL для оновлень весни 2018 року, коли я захопив це зображення. Обіцяйте, що незабаром завантажуся в Ubuntu в Linux.


2

Для ще коротших показників погоди http://weather.tuxnet24.de надає дані про погоду від Yahoo! у текстовому та xml форматі.

Потім файли з XML можуть бути отримані за допомогою аналізатора XML, як xmllint, тобто.

Я написав q & d погодний скрипт, який отримує поточну температуру та опис погоди, а потім зберігає символ unicode, що відповідає опису, і видає його як

☂ 6 ° C

Я регулярно оновлююсь через cronjob, а потім використовую вихід у своєму статусі лотка.

Отримайте свій ідентифікатор у yahoocom / новини / погода. Змініть місце розташування до потрібного місця та шукайте ідентифікатор у URL-адресі (тобто, якщо URL-адреса yahoocom / новини / погода / Німеччина / північ-Рейн-Вестфалія / bielefeld-20066057, ідентифікатор - 20066057).

XML містить додаткові поля, тобто дані прогнозу, вітер тощо. - Ви також можете їх розібрати, якщо хочете.

На жаль, деякі символи погоди не представлені в Ubuntufont ... не соромтеся коригувати.

Ось мій сценарій (замініть 20066057 своїм посвідченням, якщо ви не живете в Білефельді) - залежить від bash, curl та 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";

несподівана помилка перенаправлення
Philip Kirkbride

Перехід shebang на #!/usr/bin/env bashфіксований для мене, Ubuntu 18.04
Philip Kirkbride

2

У мене є ще один спосіб.

Відкрийте файл .bashrc і вставте цей код внизу

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

Збережіть і закрийте .bashrcфайл та запустіть наступну команду для оновлення bash:

. .bashrc 

потім введіть Wверхній регістр


bash: W: команда не знайдена

Після редагування .bashrc
relogin

Вам не доведеться повторно реєструватися, якщо ви "джерелом" вашого .bashrcфайлу. Ви можете запустити: source .bashrcабо замість цього запустити:. .bashrc
mchid

0

Хоча рішення curweather curl досить добре, мені потрібно було щось більш інформаційне, тому я створив простий скрипт bash, який тягне інформацію на наступні 4 години з веб-сайту weather.com. Як і в попередньому прикладі, ви повинні змінити посилання на своє місцезнаходження.

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;

Повний сценарій розміщений за адресою: https://sites.google.com/site/wozoopalinux/home/wzbash001/get-weather-information-from-command-line-for-next-4-hrs


0

Метеограма всіх міст міста світу

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

Ось як його використовувати:

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

Історія позаду цього від розробника.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.