mirror of
https://github.com/TECHNOFAB11/tmux2k.git
synced 2025-12-12 08:00:08 +01:00
Add weather.sh
This commit is contained in:
parent
023d929f4e
commit
ddb78e00d4
1 changed files with 74 additions and 0 deletions
74
scripts/weather.sh
Executable file
74
scripts/weather.sh
Executable file
|
|
@ -0,0 +1,74 @@
|
|||
#!/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
|
||||
|
||||
fahrenheit=$1
|
||||
location=$2
|
||||
fixedlocation=$3
|
||||
|
||||
display_location()
|
||||
{
|
||||
if $location && [[ ! -z "$fixedlocation" ]]; then
|
||||
echo " $fixedlocation"
|
||||
elif $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()
|
||||
{
|
||||
display_weather=$1
|
||||
# it gets the weather condition textual name (%C), and the temperature (%t)
|
||||
curl -sL wttr.in/$fixedlocation\?format="%C+%t$display_weather"
|
||||
}
|
||||
|
||||
#get weather display
|
||||
display_weather()
|
||||
{
|
||||
if $fahrenheit; then
|
||||
display_weather='&u' # for USA system
|
||||
else
|
||||
display_weather='&m' # for metric system
|
||||
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()
|
||||
{
|
||||
weather_condition=$(echo $weather_condition | awk '{print tolower($0)}')
|
||||
|
||||
if [[ $weather_condition =~ 'snow' ]]; then
|
||||
echo '❄ '
|
||||
elif [[ (($weather_condition =~ 'rain') || ($weather_condition =~ 'shower')) ]]; then
|
||||
echo '☂ '
|
||||
elif [[ (($weather_condition =~ 'overcast') || ($weather_condition =~ 'cloud')) ]]; then
|
||||
echo '☁ '
|
||||
elif [[ $weather_condition = 'NA' ]]; then
|
||||
echo ''
|
||||
else
|
||||
echo '☀ '
|
||||
fi
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
# process should be cancelled when session is killed
|
||||
if ping -q -c 1 -W 1 ipinfo.io &>/dev/null; then
|
||||
echo "$(display_weather)$(display_location)"
|
||||
else
|
||||
echo "Location Unavailable"
|
||||
fi
|
||||
}
|
||||
|
||||
#run main driver program
|
||||
main
|
||||
Loading…
Add table
Add a link
Reference in a new issue