#!/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 '%s' "$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="--°C Unavailable $(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="--°C Unavailable $(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="$(markup_escape "$temp $condition") $(icon_markup "$icon" "#88C0D0")"
tooltip=$(cat <