Я хочу найти текущий погода определенного города или моего местоположения с терминала. Есть ли какое-нибудь приложение погоды из командной строки?
Просто введите следующее в терминале:
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.
Найдите свой город по адресу http://www.accuweather.com и замените URL-адрес в следующем скрипте URL-адресом вашего города:
#!/bin/shURL='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°
Вот отличная полуграфическая утилита командной строки, написанная на Go:
https://github.com/schachmat/wego/
Вам нужно будет установить Go и настроить некоторые функции API, но инструкции есть. Вот примерный рисунок:
У меня есть еще один способ.
Открой свой .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 gunturDecember 14, 2013: Clear. High 31&deg;C (87&deg;F). Winds 0 kph NorthDecember 15, 2013: Clear. High 29&deg;C (84&deg;F). Winds 10 kph NNWDecember 16, 2013: Clear. High 31&deg;C (87&deg;F). Winds 10 kph NorthDecember 17, 2013: Clear. High 29&deg;C (84&deg;F). Winds 7 kph ENEDecember 18, 2013: Scattered Clouds. High 29&deg;C (84&deg;F). Winds 3 kph ENEDecember 19, 2013: Scattered Clouds. High 29&deg;C (84&deg;F). Winds 3 kph ENE
ansiweather
AnsiWeather - это сценарий оболочки для отображения текущих погодных условий в вашем терминале с поддержкой цветов ANSI и символов Unicode. Данные о погоде поступают из бесплатного погодного API OpenWeatherMap.
sudo apt-get install ansiweatheransiweather -l London,GB -f 3London forecast => Sat Jan 13: 7/2 °C ☔ - Sun Jan 14: 4/1 °C ☔ - Mon Jan 15: 9/6 °C ☔
Сначала вам нужно установить пакет weather-util, для этого просто нажмите Ctrl+Alt+T на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните приведенные ниже команды:
sudo apt-get install weather-util
Вам понадобится ваш местный погодный код.
После установки вы можете запустить weather -i <code>
. Код, который вы получите по ссылке выше. Для получения списка доступных опций вы можете запустить weather
Информация о погоде
Попробуйте использовать
telnet rainmaker.wunderground.com
кроме того, программа, которая поставляется с предустановленной 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
У меня есть еще один способ.
Откройте свой файл .bashrc, а затем вставьте этот код внизу
test -f ~/.wttr.in || curl -sk wttr.in -o ~/.wttr.infind ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;head -7 ~/.wttr.in | tail -5W(){ find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;; head -27 ~/.wttr.in; }
Сохраните и закройте свой .bashrc
файл и выполните следующую команду для обновления bash:
. .bashrc
затем введите W
верхний регистр
Для еще более коротких погодных условий http://weather.tuxnet24.de предоставляет данные о погоде от Yahoo! в текстовом и xml-формате.
Затем файлы из XML могут быть получены с помощью синтаксического анализатора XML, такого как xmllint, т.е..
Я написал сценарий выборки погоды для вопросов и ответов, который получает текущую температуру и описание погоды, затем сохраняет символ юникода, соответствующий описанию, и выводит его следующим образом
≈ 6°C
Я регулярно обновляюсь через cronjob, а затем использую выходные данные в своем статусе в трее.
Получите свой идентификатор на сайте yahoocom/новости/погода. Измените местоположение на желаемое местоположение и найдите идентификатор в URL (например, если URL-адрес yahoocom/news/weather/germany/north-rhine-westphalia/bielefeld-20066057, идентификатор будет 20066057).
XML содержит дополнительные поля, например, данные прогноза, ветер и т.д. – вы тоже можете разобрать их, если хотите.
К сожалению, некоторые погодные символы не представлены в Ubuntufont ... не стесняйтесь вносить изменения.
Вот мой скрипт (замените 20066057 на ваш идентификатор, если вы не живете в Билефельде) - зависит от bash, curl и xmllint.
#!/bin/sh#☁☂☔❄❅❆☃ ☀☁☂⚡⚐☼# write xml to variablew_xml=$(curl -Ls "http://weather.tuxnet24.de/?id=20066057&mode=xml");# get fields from xml via xmllint | xargs for trimming# weather descriptionw_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_txtif [ "$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 symbolelse w_sym=$w_txt; fi# output <symbol><space><temp-in-°C>echo "$w_sym"" ""$w_tpc";