update
This commit is contained in:
88
.config/waybar/scripts/weather-norrkoping.sh
Executable file
88
.config/waybar/scripts/weather-norrkoping.sh
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env bash
|
||||
set -u
|
||||
|
||||
LOCATION="Norrkoping"
|
||||
URL="https://wttr.in/${LOCATION}?format=%t|%C"
|
||||
|
||||
json_escape() {
|
||||
local s="$1"
|
||||
s=${s//\\/\\\\}
|
||||
s=${s//\"/\\\"}
|
||||
s=${s//$'\n'/\\n}
|
||||
printf '%s' "$s"
|
||||
}
|
||||
|
||||
markup_escape() {
|
||||
local s="$1"
|
||||
s=${s//&/&}
|
||||
s=${s//</<}
|
||||
s=${s//>/>}
|
||||
printf '%s' "$s"
|
||||
}
|
||||
|
||||
icon_markup() {
|
||||
local icon="$1"
|
||||
local color="$2"
|
||||
printf '<span font_desc="SauceCodePro Nerd Font 15" foreground="%s">%s</span>' "$color" "$icon"
|
||||
}
|
||||
|
||||
icon_for_condition() {
|
||||
local c
|
||||
c=$(printf '%s' "$1" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
case "$c" in
|
||||
*thunder*|*storm*)
|
||||
printf ''
|
||||
;;
|
||||
*snow*|*sleet*|*blizzard*|*ice*)
|
||||
printf ''
|
||||
;;
|
||||
*rain*|*drizzle*|*shower*)
|
||||
printf ''
|
||||
;;
|
||||
*fog*|*mist*|*haze*|*smoke*)
|
||||
printf ''
|
||||
;;
|
||||
*partly*)
|
||||
printf ''
|
||||
;;
|
||||
*clear*|*sunny*)
|
||||
printf ''
|
||||
;;
|
||||
*cloud*|*overcast*)
|
||||
printf ''
|
||||
;;
|
||||
*)
|
||||
printf ''
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
if ! command -v curl >/dev/null 2>&1; then
|
||||
text="<span foreground=\"#EBCB8B\">--°C Unavailable</span> $(icon_markup "" "#D08770")"
|
||||
printf '{"text":"%s","tooltip":"curl is required for weather","class":"weather-unavailable"}\n' "$(json_escape "$text")"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
raw=$(curl -fsS --max-time 6 "$URL" 2>/dev/null || true)
|
||||
if [[ -z "$raw" || "$raw" != *"|"* ]]; then
|
||||
text="<span foreground=\"#EBCB8B\">--°C Unavailable</span> $(icon_markup "" "#D08770")"
|
||||
printf '{"text":"%s","tooltip":"Weather unavailable for Norrkoping","class":"weather-unavailable"}\n' "$(json_escape "$text")"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
temp=${raw%%|*}
|
||||
condition=${raw#*|}
|
||||
icon=$(icon_for_condition "$condition")
|
||||
updated=$(date '+%H:%M')
|
||||
text="<span foreground=\"#D8DEE9\">$(markup_escape "$temp $condition")</span> $(icon_markup "$icon" "#88C0D0")"
|
||||
tooltip=$(cat <<EOF
|
||||
Norrkoping, Sweden
|
||||
$temp - $condition
|
||||
Updated: $updated
|
||||
EOF
|
||||
)
|
||||
|
||||
printf '{"text":"%s","tooltip":"%s","class":"weather"}\n' \
|
||||
"$(json_escape "$text")" \
|
||||
"$(json_escape "$tooltip")"
|
||||
Reference in New Issue
Block a user