dotfiles/misc/bin/weather
2023-11-19 23:55:40 -05:00

132 lines
2.3 KiB
Bash

#!/usr/bin/env bash
encode_to_url_format() {
echo "$1" | sed 's/ /%20/g'
}
check_if_empty() {
[[ -z "$1" ]] && echo "0" || echo "$1"
}
KEY="699a48531cdd445784916ed7a7ca80e6"
CITY="Virginia Beach"
CITYN=$(encode_to_url_format "$CITY")
UNITS="imperial" # Available "metric" "imperial"
WEATHER=$(curl -sf "api.openweathermap.org/data/2.5/weather?q=$CITYN&appid=$KEY&units=$UNITS")
WEATHER_DESC=$(echo "$WEATHER" | jq -r ".weather[0].main")
WEATHER_TEMP=$(echo "$WEATHER" | jq ".main.temp" | cut -d "." -f 1)
WEATHER_ICON_CODE=$(echo "$WEATHER" | jq -r ".weather[].icon" | head -1)
WEATHER_FEELS_LIKE=$(echo "$WEATHER" | jq ".main.feels_like" | cut -d "." -f 1)
WEATHER_ICON=""
WEATHER_HEX=""
case $WEATHER_ICON_CODE in
"01d")
WEATHER_ICON=""
WEATHER_HEX="#ffd86b"
;;
"01n")
WEATHER_ICON=""
WEATHER_HEX="#fcdcf6"
;;
"02d")
WEATHER_ICON=""
WEATHER_HEX="#adadff"
;;
"02n")
WEATHER_ICON=""
WEATHER_HEX="#adadff"
;;
"03d")
WEATHER_ICON=""
WEATHER_HEX="#adadff"
;;
"03n")
WEATHER_ICON=""
WEATHER_HEX="#adadff"
;;
"04d")
WEATHER_ICON=""
WEATHER_HEX="#adadff"
;;
"04n")
WEATHER_ICON=""
WEATHER_HEX="#acb0d0"
;;
"09d")
WEATHER_ICON=""
WEATHER_HEX="#6b95ff"
;;
"09n")
WEATHER_ICON=""
WEATHER_HEX="#6b95ff"
;;
"10d")
WEATHER_ICON=""
WEATHER_HEX="#6b95ff"
;;
"10n")
WEATHER_ICON=""
WEATHER_HEX="#6b95ff"
;;
"11d")
WEATHER_ICON=""
WEATHER_HEX="#ffeb57"
;;
"11n")
WEATHER_ICON=""
WEATHER_HEX="#ffeb57"
;;
"13d")
WEATHER_ICON=""
WEATHER_HEX="#e3e6fc"
;;
"13n")
WEATHER_ICON=""
WEATHER_HEX="#e3e6fc"
;;
"40d")
WEATHER_ICON=""
WEATHER_HEX="#84afdb"
;;
"40n")
WEATHER_ICON=""
WEATHER_HEX="#84afdb"
;;
*)
WEATHER_ICON=""
WEATHER_HEX="#adadff"
;;
esac
case $1 in
"current_temp")
check_if_empty "$WEATHER_TEMP"
;;
"current_temp_fahrenheit")
WEATHER_TEMP=$("$WEATHER_TEMP" 9 / 5 + 32)
check_if_empty "$WEATHER_TEMP"
;;
"feels_like")
check_if_empty "$WEATHER_FEELS_LIKE"
;;
"weather_desc")
[[ -z $WEATHER_DESC ]] && echo "Not Available." || echo "$WEATHER_DESC"
;;
"icon")
echo $WEATHER_ICON
;;
"hex")
echo $WEATHER_HEX
;;
"full")
echo "$WEATHER"
;;
"city")
echo "$CITY"
;;
"wmodule")
echo $WEATHER_ICON "$WEATHER_TEMP"°
;;
esac