166 lines
6.6 KiB
Plaintext
166 lines
6.6 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
|
||
|
## Collect data
|
||
|
cache_dir="$HOME/.cache/eww/weather"
|
||
|
cache_weather_stat=${cache_dir}/weather-stat
|
||
|
cache_weather_degree=${cache_dir}/weather-degree
|
||
|
cache_weather_quote=${cache_dir}/weather-quote
|
||
|
cache_weather_hex=${cache_dir}/weather-hex
|
||
|
cache_weather_icon=${cache_dir}/weather-icon
|
||
|
|
||
|
## Weather data
|
||
|
KEY=8289fc0cb3cc706f3078a8c86bea911f
|
||
|
ID=5288636
|
||
|
UNIT=metric # Available options : 'metric' or 'imperial'
|
||
|
|
||
|
## Make cache dir
|
||
|
if [[ ! -d "$cache_dir" ]]; then
|
||
|
mkdir -p ${cache_dir}
|
||
|
fi
|
||
|
|
||
|
## Get data
|
||
|
get_weather_data() {
|
||
|
weather=$(curl -sf "http://api.openweathermap.org/data/2.5/weather?APPID="$KEY"&lat=24.963214912659005&lon=121.26339510521424&units="$UNIT"")
|
||
|
echo ${weather}
|
||
|
|
||
|
if [ -n "$weather" ]; then
|
||
|
weather_temp=$(echo "$weather" | jq ".main.temp" | cut -d "." -f 1)
|
||
|
weather_icon_code=$(echo "$weather" | jq -r ".weather[].icon" | head -1)
|
||
|
weather_description=$(echo "$weather" | jq -r ".weather[].description" | head -1 | sed -e "s/\b\(.\)/\u\1/g")
|
||
|
|
||
|
#Big long case statement of doom
|
||
|
case "$weather_icon_code" in
|
||
|
50d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="Forecast says it's misty \nMake sure you don't get lost on your way..."
|
||
|
weather_hex="#84afdb"
|
||
|
;;
|
||
|
50n)
|
||
|
weather_icon=" "
|
||
|
weather_quote="Forecast says it's a misty night \nDon't go anywhere tonight or you might get lost..."
|
||
|
weather_hex="#84afdb"
|
||
|
;;
|
||
|
01d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's a sunny day, gonna be fun! \nDon't go wandering all by yourself though..."
|
||
|
weather_hex="#ffd86b"
|
||
|
;;
|
||
|
01n)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's a clear night \nYou might want to take a evening stroll to relax..."
|
||
|
weather_hex="#fcdcf6"
|
||
|
;;
|
||
|
02d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's cloudy, sort of gloomy \nYou'd better get a book to read..."
|
||
|
weather_hex="#adadff"
|
||
|
;;
|
||
|
02n)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's a cloudy night \nHow about some hot chocolate and a warm bed?"
|
||
|
weather_hex="#adadff"
|
||
|
;;
|
||
|
03d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's cloudy, sort of gloomy \nYou'd better get a book to read..."
|
||
|
weather_hex="#adadff"
|
||
|
;;
|
||
|
03n)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's a cloudy night \nHow about some hot chocolate and a warm bed?"
|
||
|
weather_hex="#adadff"
|
||
|
;;
|
||
|
04d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's cloudy, sort of gloomy \nYou'd better get a book to read..."
|
||
|
weather_hex="#adadff"
|
||
|
;;
|
||
|
04n)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's a cloudy night \nHow about some hot chocolate and a warm bed?"
|
||
|
weather_hex="#adadff"
|
||
|
;;
|
||
|
09d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's rainy, it's a great day! \nGet some ramen and watch as the rain falls..."
|
||
|
weather_hex="#6b95ff"
|
||
|
;;
|
||
|
09n)
|
||
|
weather_icon=" "
|
||
|
weather_quote=" It's gonna rain tonight it seems \nMake sure your clothes aren't still outside..."
|
||
|
weather_hex="#6b95ff"
|
||
|
;;
|
||
|
10d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's rainy, it's a great day! \nGet some ramen and watch as the rain falls..."
|
||
|
weather_hex="#6b95ff"
|
||
|
;;
|
||
|
10n)
|
||
|
weather_icon=" "
|
||
|
weather_quote=" It's gonna rain tonight it seems \nMake sure your clothes aren't still outside..."
|
||
|
weather_hex="#6b95ff"
|
||
|
;;
|
||
|
11d)
|
||
|
weather_icon=""
|
||
|
weather_quote="There's storm for forecast today \nMake sure you don't get blown away..."
|
||
|
weather_hex="#ffeb57"
|
||
|
;;
|
||
|
11n)
|
||
|
weather_icon=""
|
||
|
weather_quote="There's gonna be storms tonight \nMake sure you're warm in bed and the windows are shut..."
|
||
|
weather_hex="#ffeb57"
|
||
|
;;
|
||
|
13d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's gonna snow today \nYou'd better wear thick clothes and make a snowman as well!"
|
||
|
weather_hex="#e3e6fc"
|
||
|
;;
|
||
|
13n)
|
||
|
weather_icon=" "
|
||
|
weather_quote="It's gonna snow tonight \nMake sure you get up early tomorrow to see the sights..."
|
||
|
weather_hex="#e3e6fc"
|
||
|
;;
|
||
|
40d)
|
||
|
weather_icon=" "
|
||
|
weather_quote="Forecast says it's misty \nMake sure you don't get lost on your way..."
|
||
|
weather_hex="#84afdb"
|
||
|
;;
|
||
|
40n)
|
||
|
weather_icon=" "
|
||
|
weather_quote="Forecast says it's a misty night \nDon't go anywhere tonight or you might get lost..."
|
||
|
weather_hex="#84afdb"
|
||
|
;;
|
||
|
*)
|
||
|
weather_icon=" "
|
||
|
weather_quote="Sort of odd, I don't know what to forecast \nMake sure you have a good time!"
|
||
|
weather_hex="#adadff"
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
echo "$weather_icon" >${cache_weather_icon}
|
||
|
echo "$weather_description" >${cache_weather_stat}
|
||
|
echo "$weather_temp""°C" >${cache_weather_degree}
|
||
|
echo -e "$weather_quote" >${cache_weather_quote}
|
||
|
echo "$weather_hex" >${cache_weather_hex}
|
||
|
else
|
||
|
echo "Weather Unavailable" >${cache_weather_stat}
|
||
|
echo " " >${cache_weather_icon}
|
||
|
echo -e "Ah well, no weather huh? \nEven if there's no weather, it's gonna be a great day!" >${cache_weather_quote}
|
||
|
echo "-" >${cache_weather_degree}
|
||
|
echo "#adadff" >${tcache_weather_hex}
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
## Execute
|
||
|
case $1 in
|
||
|
--getdata) get_weather_data ;;
|
||
|
--mintemp) get_weather_data | jq ".main.temp_min" ;;
|
||
|
--maxtemp) get_weather_data | jq ".main.temp_max" ;;
|
||
|
--icon) cat ${cache_weather_icon} ;;
|
||
|
--temp) cat ${cache_weather_degree} ;;
|
||
|
--hex) cat ${cache_weather_hex} ;;
|
||
|
--stat) cat ${cache_weather_stat} ;;
|
||
|
--quote) cat ${cache_weather_quote} | head -n1 ;;
|
||
|
--quote2) cat ${cache_weather_quote} | tail -n1 ;;
|
||
|
esac
|