mirror of
https://github.com/frebib/dotfiles.git
synced 2024-06-14 12:57:23 +00:00
142 lines
4.5 KiB
Bash
142 lines
4.5 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
get_icon_day() {
|
||
|
case $1 in
|
||
|
210) echo ;; # light thunderstorm
|
||
|
211) echo ;; # thunderstorm
|
||
|
500) echo ;; # light rain
|
||
|
721) echo ;; # haze
|
||
|
800) echo ;; # clear sky
|
||
|
801) echo ;; # few clouds
|
||
|
802) echo ;; # scattered clouds
|
||
|
803) echo ;; # broken clouds
|
||
|
804) echo ;; # overcast clouds
|
||
|
*) return 1;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
get_icon_night() {
|
||
|
case $1 in
|
||
|
210) echo ;; # light thunderstorm
|
||
|
211) echo ;; # thunderstorm
|
||
|
500) echo ;; # light rain
|
||
|
800) echo ;; # clear sky
|
||
|
801) echo ;; # few clouds
|
||
|
802) echo ;; # scattered clouds
|
||
|
803) echo ;; # broken clouds
|
||
|
804) echo ;; # overcast clouds
|
||
|
*) return 1;;
|
||
|
esac
|
||
|
|
||
|
}
|
||
|
|
||
|
get_icon() {
|
||
|
case $1 in
|
||
|
d) fn=get_icon_day;;
|
||
|
n) fn=get_icon_night;;
|
||
|
esac
|
||
|
|
||
|
if $fn $2; then
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
case $2 in
|
||
|
200) echo ;; # thunderstorm with light rain
|
||
|
201) echo ;; # thunderstorm with rain
|
||
|
202) echo ;; # thunderstorm with heavy rain
|
||
|
210) echo ;; # light thunderstorm
|
||
|
211) echo ;; # thunderstorm
|
||
|
212) echo ;; # heavy thunderstorm
|
||
|
221) echo ;; # ragged thunderstorm
|
||
|
230) echo ;; # thunderstorm with light drizzle
|
||
|
231) echo ;; # thunderstorm with drizzle
|
||
|
232) echo ;; # thunderstorm with heavy drizzle
|
||
|
300) echo ;; # light intensity drizzle
|
||
|
301) echo ;; # drizzle
|
||
|
302) echo ;; # heavy intensity drizzle
|
||
|
310) echo ;; # light intensity drizzle rain
|
||
|
311) echo ;; # drizzle rain
|
||
|
312) echo ;; # heavy intensity drizzle rain
|
||
|
313) echo ;; # shower rain and drizzle
|
||
|
314) echo ;; # heavy shower rain and drizzle
|
||
|
321) echo ;; # shower drizzle
|
||
|
500) echo ;; # light rain
|
||
|
501) echo ;; # moderate rain
|
||
|
502) echo ;; # heavy intensity rain
|
||
|
503) echo ;; # very heavy rain
|
||
|
504) echo ;; # extreme rain
|
||
|
511) echo ;; # freezing rain
|
||
|
520) echo ;; # light intensity shower rain
|
||
|
521) echo ;; # shower rain
|
||
|
522) echo ;; # heavy intensity shower rain
|
||
|
531) echo ;; # ragged shower rain
|
||
|
600) echo ;; # light snow
|
||
|
601) echo ;; # snow
|
||
|
602) echo ;; # heavy snow
|
||
|
611) echo ;; # sleet
|
||
|
612) echo ;; # shower sleet
|
||
|
615) echo ;; # light rain and snow
|
||
|
616) echo ;; # rain and snow
|
||
|
620) echo ;; # light shower snow
|
||
|
621) echo ;; # shower snow
|
||
|
622) echo ;; # heavy shower snow
|
||
|
701) echo ;; # mist
|
||
|
711) echo ;; # smoke
|
||
|
721) echo ;; # haze
|
||
|
741) echo ;; # fog
|
||
|
762) echo ;; # volcanic ash
|
||
|
781) echo ;; # tornado
|
||
|
800) echo ;; # clear sky
|
||
|
801) echo ;; # few clouds
|
||
|
802) echo ;; # scattered clouds
|
||
|
803) echo ;; # broken clouds
|
||
|
804) echo ;; # overcast clouds
|
||
|
# 731) echo ;; # sand, dust whirls
|
||
|
# 751) echo ;; # sand
|
||
|
# 761) echo ;; # dust
|
||
|
# 771) echo ;; # squalls
|
||
|
*) echo ;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
KEY="$OPENWEATHERMAP_API_KEY"
|
||
|
CITY=""
|
||
|
UNITS="metric"
|
||
|
|
||
|
SYMBOL="°"
|
||
|
ICON_COL="147a82"
|
||
|
|
||
|
API="https://api.openweathermap.org/data/2.5"
|
||
|
|
||
|
if [ ! -z $CITY ]; then
|
||
|
if [ "$CITY" -eq "$CITY" ] 2>/dev/null; then
|
||
|
CITY_PARAM="id=$CITY"
|
||
|
else
|
||
|
CITY_PARAM="q=$CITY"
|
||
|
fi
|
||
|
|
||
|
weather=$(curl -sf "$API/weather?appid=$KEY&$CITY_PARAM&units=$UNITS")
|
||
|
else
|
||
|
location=$(curl -sf https://location.services.mozilla.com/v1/geolocate?key=geoclue)
|
||
|
|
||
|
if [ ! -z "$location" ]; then
|
||
|
location_lat="$(echo "$location" | jq '.location.lat')"
|
||
|
location_lon="$(echo "$location" | jq '.location.lng')"
|
||
|
|
||
|
weather=$(curl -sf "$API/weather?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS")
|
||
|
else
|
||
|
echo "%{F#$ICON_COL}%{F-}"
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
if [ ! -z "$weather" ]; then
|
||
|
# weather_desc=$(echo "$weather" | jq -r ".weather[0].description")
|
||
|
weather_temp=$(echo "$weather" | jq '.main.temp' | cut -d "." -f 1)
|
||
|
weather_code=$(echo "$weather" | jq -r '.weather[0].id')
|
||
|
time_of_day=$(echo "$weather" | jq -r '.weather[0].icon | split("") | last')
|
||
|
|
||
|
icon=$(get_icon "$time_of_day" "$weather_code")
|
||
|
|
||
|
echo "%{F#$ICON_COL}$icon%{F-} $weather_temp$SYMBOL"
|
||
|
fi
|