- Добавляем отображение погоды в терминале Linux
- Будем использовать сервис wttr.in
- Вывод прогноза в терминале
- Подведем итог
- Получаем погоду в красивом виде в терминале используя лишь wget
- Использование
- Добавляем алиасы
- Как проверить погоду из терминала с помощью AnsiWeather
- Установка
- Основное использование
- Ваша погода
- Больше переключателей
- Как вывести на консоль информацию о погоде с помощью wget по ссылке с использованием API
Добавляем отображение погоды в терминале Linux
Несмотря на то, что использование терминала в дистрибутивах Linux необязательно и практически все можно сделать в системе без него, некоторые пользователи рано или поздно начинают использовать этот инструмент при взаимодействии с дистрибутивом, причем так интенсивно, что порой полностью на него переключаются.
При этом, не всем нравится скучный темный экран консоли, который появляется при запуске терминала. Ранее мы говорили про то, что можно изменить оформление консоли, добавив в него цветов: перейти на альтернативную BASH оболочку (например, ZSH), настроить BASH (или ZSH) так, чтобы вывод был приятен взгляду, добавить при старте терминала вывод информации о дистрибутиве при помощи Neofetch (или чего-то подобного) или изменить шрифты. Материалы, посвященные этим темам вы можете найти по ссылкам ниже. В этом материале расскажу о том, как добавить в терминал Linux отображение прогноза погоды.
Будем использовать сервис wttr.in
Разработчик Игорь Чубин создал сервис wttr.in, который представляет собой веб-сайт, где можно узнать погоду исходя из текущего местоположения. Если вы перейти по ссылке, указанной в тексте, то появится примерно такая же картинка, как на скриншоте, но только касаемо вашего города.
Однако, как вы поняли, чтобы добавить этот прогноз в терминал, браузер придется закрыть и воспользоваться утилитой curl, про которую ранее на канале выходила статья.
Получается, чтобы получить прогноз непосредственно в терминале, нужно ввести там простую команду:
Как видим, результат отображается на английском языке. Чтобы исправить это, нужно указывать параметры в запросе. Они указываются через вопросительный знак (?). Чтобы переключиться на русский язык (сервис поддерживает более 40 языков), введем следующую команду:
curl https://wttr.in/\?lang=ru
По-умолчанию, запрашивается текущее местоположение пользователя, который осуществляет запрос на основе его IP-адреса (это из разряда — я тебя по IP вычислю). Чтобы запросить прогноз для другого города его нужно указать напрямую:
curl https://wttr.in/moscow
В качестве параметров в запросе можно указывать много чего, что позволит гибко настроить выводимую в терминал информацию или даже сохранять вывод сразу в PNG-изображение. Чтобы узнать все поддерживаемые форматы нужно воспользоваться командой:
Вывод прогноза в терминале
Чтобы прогноз появлялся сразу после старта терминала, нужно добавить выбранную вами команду в конфигурационный файл используемой оболочки. У меня, например, это ZSH, поэтому строку с командой я буду добавлять в файл, который находится по пути $HOME/.zshrc, для BASH это будет $HOME/.bashrc.
Открыл конфигурационный файл посредством текстового консольного редактора Neovim и вставил в рандомное место нужную команду. Теперь достаточно сохранить изменения и перезапустить оболочку, чтобы она подхватила новый конфиг:
Теперь при открытии терминала будет отображаться прогноз погоды. Опять-таки, настроив отображение по своему вкусу, вы сможете настроить информацию о погоде таким образом, чтобы она не перекрывала половину окна терминала.
Также можно настроить вывод прогноза при использовании алиаса, установленного, например, на букву w (weather — погода). Про то, что такое алиасы и как их настраивать я рассказывал ранее на канале, заметку можете найти по ссылке ниже.
Подведем итог
Не каждому необходима подобная информация при старте терминала, но есть определенные категории пользователей, которые любят расширять функционал консоли методами, описанными выше. Специально для них я и написал эту статью.
Ну и думаю, что тем, кто часто использует терминал понимание того, как быстро просмотреть прогноз погоды в своем городе окажется тоже полезным.
Получаем погоду в красивом виде в терминале используя лишь wget
wttr.in — это веб-фронтенд для wego, небольшой утилиты для Linux терминала написанной на языке Golang. Сервис позволяет используя любой консольный HTTP клиент посмотреть погоду не покидая терминала, да ещё красиво и стильно! И да, конечно можно выводить погоду в conky.
Скриншот погоды в Linux терминале с использованием сервиса wttr.in
По умолчанию сервис пытается получить информацию о текущем местоположении по IP-адресу, но если у него это не выходит то можно указать вручную. Указать для какого расположения необходим прогноз погоды можно передав:
Сервис позволяет получить погоду на три дня вперед, фазу луны и поддерживает как метрическую систему отображения температуры, так и «имперскую». Хотя кому нужна имперская система в России? 🙂
Сам wego и, соответственно, wttr в качестве источника информации о погоде использует WorldWeatherOnline.
Использование
Все, что нужно чтобы получить погоду — это терминал, и какой либо консольный HTTP клиент. В примерах ниже используется wget , т.к. он есть по-умолчанию почти во всех Linux дистрибутивах:
Если wttr.in не сможет определить ваше расположение, то указать его можно используя название города, код аэропорта или ZIP-код. Ниже несколько примеров.
Используя название города
Город в названии которого присутствует пробел, или иные символы необходимо указать в кавычках:
wget -O - wttr.in/"Saint Petersburg" -q
Используя код аэропорта
Посмотреть код интересующего аэропорта можно на той же википедии:
ZIP-коды для России не применимы. 🙂
В лучших традициях, есть :help :
╰─➤ wget -O - wttr.in/:help -q 4 ↵ Usage: $ curl wttr.in # current location $ curl wttr.in/muc # weather in the Munic airport Supported location types: /paris # city name /muc # airport code (3 letters) /@stackoverflow.com # domain name /94107 # area codes Special locations: /moon # Moon phase (add ,+US or ,+France for these cities) Units: ?m # metric (SI) (used by default everywhere except US) ?u # USCS (used by default in US) Special URLs: /:help # show this page
Добавляем алиасы
Чтобы каждый раз не писать длинную команду, добавляем alias в ваш ~/.bashrc или ~/.zshrc :
alias wttr=`wget -O - wttr.in/Moscow -q`
Не забудьте заменить Moscow на ваш город. После добавления алиаса, достаточно набрать wttr в терминале.
Если вам по каким-то причинам не нравится использовать сторонние сервисы, то wttr.in можно развернуть на своем сервере. Инструкции как это сделать можно найти тут.
Как проверить погоду из терминала с помощью AnsiWeather
AnsiWeather – это шеллскрипт, предназначенный для мгновенного отображения текущего состояния погоды в терминале в формате ANSI. На данный момент, он лучший среди себеподобных: сверхбыстрый в работе и не требует никаких ресурсов, и не смотря на всю свою простоту в нем достаточно опций для настройки отображения прогноза погоды.
Конечно, вы можете найти и более привлекательные решения, но все они будут требовательнее к ресурсам или более сложными в использовании. Если все, что вам нужно, это мгновенный и простой способ проверить погоду, AnsiWeather идеально придется к вашему двору. Давайте подробнее рассмотрим, как можно использовать его возможности по максимуму.
Установка
Хоть AnsiWeather доступен в стандартной коллекции программного обеспечения Ubuntu, но вы не сможете найти его в визуально дружественном Центре программного обеспечения. Чтобы установить его, нужно открыть терминал и набрать:
sudo apt install ansiweather
Для других дистрибутивов вы можете просто клонировать репозиторий:
git clone https://github.com/fcambus/ansiweather.git
cd ansiweather ./ansiweather
AnsiWeather — совсем крошечное приложение, поэтому его установка не займет больше нескольких секунд.
Основное использование
Теоретически, единственное, что вам нужно сделать, чтобы узнать подробности о текущей погоде в вашем регионе, это запустить AnsiWeather в вашем любимом терминале. После его установки введите на экране терминала:
Как вы можете видеть на скриншоте, AnsiWeather предоставил мне информацию о погоде в Жешуве. Помимо ожидаемой температуры, он также показал скорость ветра, уровень влажности и давления. Есть только одна маленькая, совсем крошечная, проблема: я не живу в Жешуве. Очень далеко от него — буквально!
Ваша погода
Чтобы AnsiWeather, не строил догадки, а отображал погоду для вашего фактического местоположения, вам стоит ввести эту информацию вручную. Для этого нужно использовать ключ -l, а затем указать ваш город / штат и страну. Так как я живу в Афинах, Греция, я использовал следующую информацию, чтобы узнать погоду для моего местоположения:
Точно так же кто-то в Лондоне будет использовать:
Если нет сомнений в том, на какую страну вы ссылаетесь, вы можете вообще пропустить ее и запустить AnsiWeather как:
Больше переключателей
Помимо включения определенного местоположения (с ключом -l), вы также можете определить предпочитаемую метрическую систему, используя ключ -u с двумя возможными вариантами: для построения нашей предыдущей команды это будет выглядеть следующим образом:
ansiweather -l Athens,GR -u metric
ansiweather -l Athens,GR -u imperial
Вы скажите, что мы обещали вам прогноз погоды, но до сих пор демонстрировали только текущие погодные условия. Чтобы получить реальный прогноз, вам нужно использовать ключ -f, а затем проставить количество дней. Например:
ansiweather -l Paris,FR -u metric -f 3
Приведенная выше команда вернет трехдневный прогноз погоды для Парижа, Франция, с использованием метрической системы. В качестве альтернативы вы можете использовать заглавную букву -F в качестве переключателя, который показывает прогноз на следующие пять дней:
ansiweather -l Paris,FR -u metric -F
Несмотря на то, что AnsiWeather далеко от специализированного графического виджета погоды или погодного приложения, он может выглядеть несколько лучше, если включить поддержку символов. Для этого вам нужно установить переключатель -s в значение true следующим образом:
ansiweather -l London,UK -u metric -F -s true
Если вы хотите, AnsiWeather может сообщить вам точное время восхода и захода солнца в вашем регионе. Для этого установите переключатель -d в значение true:
ansiweather -l London,UK -u metric -s true -d true
Однако, обратите внимание, кажется, это жестко запрограммировано, информационная сводка не должна превышать определенной длины, поэтому вы, к сожалению, не можете одновременно запрашивать дневной и пятидневный прогноз.
И, наконец, следует отметить некоторые другие ключи: -a, позволяющий включить поддержку цвета ANSI, -w, чтобы запросить данные о ветре, -h для влажности и -p для данных о давлении. Всем им можно задать значение «true» или «false», как мы видели для предыдущих опций, чтобы включить или выключить их.
И, поскольку он полностью работает в терминале, вы можете использовать AnsiWeather в качестве основы для создания собственных умных сценариев. С их помощью вы сможете, например, проверить прогноз на следующий день и отправить электронное письмо будущему себе, если вам понадобится взять с собой зонтик. Эту и другие подобные идеи мы обсудим в следующей статье.
Используете ли вы другое приложение или решение для проверки погоды или что-то вроде WTTR, который объединяет терминал с веб-службой? И если да, напишите в комментах, какой?
Как вывести на консоль информацию о погоде с помощью wget по ссылке с использованием API
РЕБЯТА. Пожалуйста помогите! Мучаюсь второй день! есть ссылка:
которая отображает код, передающий информацию о погоде в Нью Йорке:
Как с помощью утилиты wget вывести на КОНСОЛЬ этот код.
Или тебе вот прям wget и ничего кроме?
я думаю, ты ищешь wget -O и jq, но лучше возьми curl и jq
Не получается…оно скачивает но не выводит на консоль, есть ещё варианты?
прочитать о том, как пользоваться -O, не вариант?
wget -cq «http://api.weatherstack.com/current?access_key=c5c90d799567f213ec249109a71af6a1&query=New York» -O —
curl -s ru.wttr.in/:help curl -s ru.wttr.in/moscow
curl -s 'http://api.weatherstack.com/current?access_key=c5c90d799567f213ec249109a71af6a1&query=New%20York'
Плюсую. Действительно, на кой чорт какой то API, когда есть уже готовая «морда».
$ curl -s ru.wttr.in/moscow?0 Прогноз погоды: moscow _`/"".-. Небольшой снег ,\_( ). -12..-6 °C /(___(__) ← 19 km/h * * * 10 km * * * 0.2 mm
Вот вам делать нехер, такой хренью заниматься.
Зря ты рабочий API ключ тут написал
Тупо найти страницу с погодой и wget
Первый адекватный комент. +1
Тупо найти страницу с погодой и wget
> inxi -W new+york,ny Weather: Report: temperature: 11.1 C (52 F) conditions: Scattered clouds Locale: current time: 2020-12-13 09:20:11 Source: WeatherBit.io > inxi -W moscow,ru Weather: Report: temperature: -3.9 C (25 F) conditions: Light Snow Locale: current time: 2020-12-13 17:22:55 Source: WeatherBit.io
Зря ты ему сказал об этом. Я уже приладился его использовать