tmux-kanagawa/scripts/weather.sh

72 lines
1.7 KiB
Bash
Raw Normal View History

2020-03-15 00:57:01 +01:00
#!/usr/bin/env bash
# setting the locale, some users have issues with different locales, this forces the correct one
export LC_ALL=en_US.UTF-8
2020-03-15 00:57:01 +01:00
2020-04-29 20:33:51 +02:00
fahrenheit=$1
location=$2
2020-04-29 20:33:51 +02:00
display_location()
{
if $location; then
city=$(curl -s https://ipinfo.io/city 2> /dev/null)
region=$(curl -s https://ipinfo.io/region 2> /dev/null)
echo " $city, $region"
else
echo ''
fi
}
fetch_weather_information()
2020-03-15 03:21:31 +01:00
{
display_weather=$1
# it gets the weather condition textual name (%C), and the temperature (%t)
curl -sL wttr.in\?format="%C+%t$display_weather"
2020-03-15 03:21:31 +01:00
}
#get weather display
2020-03-15 03:21:31 +01:00
display_weather()
{
if $fahrenheit; then
display_weather='&u' # for USA system
2020-03-15 03:21:31 +01:00
else
display_weather='&m' # for metric system
2020-03-15 03:21:31 +01:00
fi
weather_information=$(fetch_weather_information $display_weather)
weather_condition=$(echo $weather_information | rev | cut -d ' ' -f2- | rev) # Sunny, Snow, etc
temperature=$(echo $weather_information | rev | cut -d ' ' -f 1 | rev) # +31°C, -3°F, etc
unicode=$(forecast_unicode $weather_condition)
echo "$unicode${temperature/+/}" # remove the plus sign to the temperature
}
forecast_unicode()
{
2020-08-05 03:50:02 +02:00
weather_condition=$(echo $weather_condition | awk '{print tolower($0)}')
2020-08-05 03:50:02 +02:00
if [[ $weather_condition =~ 'snow' ]]; then
echo '❄ '
2020-08-05 03:50:02 +02:00
elif [[ (($weather_condition =~ 'rain') || ($weather_condition =~ 'shower')) ]]; then
echo '☂ '
2020-08-05 03:50:02 +02:00
elif [[ (($weather_condition =~ 'overcast') || ($weather_condition =~ 'cloud')) ]]; then
echo '☁ '
elif [[ $weather_condition = 'NA' ]]; then
echo ''
else
echo '☀ '
fi
2020-03-15 03:21:31 +01:00
}
2020-03-15 00:57:01 +01:00
main()
{
# process should be cancelled when session is killed
2020-03-15 03:21:31 +01:00
if ping -q -c 1 -W 1 ipinfo.io &>/dev/null; then
echo "$(display_weather)$(display_location)"
2020-03-15 03:21:31 +01:00
else
echo "Location Unavailable"
fi
2020-03-15 00:57:01 +01:00
}
#run main driver program
main