Autor: Frederic Cambus
Más información del script en fcambus
#!/usr/bin/env bash
###############################################################################
# #
# AnsiWeather 1.00 (c) by Frederic Cambus 2013 #
# https://github.com/fcambus/ansiweather #
# #
# Created: 2013/08/29 #
# Last Updated: 2013/10/19 #
# #
# AnsiWeather is released under the BSD 3-Clause license. #
# See LICENSE file for details. #
# #
###############################################################################
###[ Configuration options ]###################################################
config_file=~/.ansiweatherrc
function get_config {
ret=""
if [ -f $config_file ]
then
ret=$(grep $1 $config_file | awk -F\: '{print $2}')
fi
if [ "X$ret" = "X" ]
then
return 1
else
echo $ret
fi
}
# Location : example "Moscow,RU"
if [ ! -z "$1" ]
then
location=$1;
else
location=$(get_config "location" || echo "Moscow,RU")
fi
# System of Units : "metric" or "imperial"
if [ ! -z "$2" ]
then
units=$2
else
units=$(get_config "units" || echo "metric")
fi
# Display symbols : "true" or "false" (requires an Unicode capable display)
symbols=$(get_config "symbols" || echo true)
#### [ Colors and characters ]#################################################
background=$(get_config "background" || echo "\033[44m")
text=$(get_config "text" || echo "\033[36;1m")
data=$(get_config "data" || echo "\033[33;1m")
delimiter=$(get_config "delimiter" || echo "\033[35m=>")
dashes=$(get_config "dashes" || echo "\033[34m-")
###[ Unicode Symbols for icons ]###############################################
sun=$(get_config "sun" || echo "\033[33;1m\xe2\x98\x80")
moon=$(get_config "moon" || echo "\033[36m\xe2\x98\xbd")
clouds=$(get_config "clouds" || echo "\033[37;1m\xe2\x98\x81")
rain=$(get_config "rain" || echo "\xe2\x98\x94")
fog=$(get_config "fog" || echo "\xe2\x96\x92")
###[ Fetch Weather data ]######################################################
fetch_cmd=$(get_config "fetch_cmd" || echo "curl -s")
weather=$($fetch_cmd "http://api.openweathermap.org/data/2.5/weather?q=$location\&units=$units")
###[ Process Weather data ]####################################################
city=$(echo $weather | jq -r '.name')
temperature=$(printf '%.0f' $(echo $weather | jq '.main.temp'))
humidity=$(echo $weather | jq '.main.humidity')
pressure=$(echo $weather | jq '.main.pressure')
sky=$(echo $weather | jq -r '.weather[0].main')
sunrise=$(echo $weather | jq '.sys.sunrise')
sunset=$(echo $weather | jq '.sys.sunset')
wind=$(echo $weather | jq '.wind.speed')
###[ Set the period ]##########################################################
now=$(date +%s)
if [ $now -ge $sunset ] || [ $now -le $sunrise ]
then
period="night"
else
period="day"
fi
###[ Set the scale ]###########################################################
case $units in
metric)
scale="°C"
speed_unit="m/s"
pressureUnit="hPa"
pressure=$(printf '%.0f' $pressure)
;;
imperial)
scale="°F"
speed_unit="mph"
pressureUnit="inHg"
pressure=$(printf '%.2f' $(echo "$pressure*0.0295" | bc))
;;
esac
###[ Set icons ]###############################################################
if [ $symbols = true ]
then
case $sky in
Clear)
if [ $period = "night" ]
then
icon="$moon "
else
icon="$sun "
fi
;;
Clouds)
icon="$clouds "
;;
Rain)
icon="$rain "
;;
Fog)
icon="$fog "
;;
esac
fi
###[ Display current Weather ]#################################################
echo -e "$background$text Current weather in $city $delimiter$data $temperature $scale $icon$dashes$text Humidity $delimiter$data $humidity % $dashes$text Wind $delimiter$data $wind $speed_unit $dashes$text Pressure $delimiter$data $pressure $pressureUnit \033[0m"
0 comentarios:
Publicar un comentario