summary refs log tree commit diff
path: root/.config/waybar/modules/covid.sh
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2021-08-03 22:12:11 +0200
committerRobert Günzler <r@gnzler.io>2021-08-03 22:12:11 +0200
commit06eccec83a88b2af00b354bedc1a44713938a385 (patch)
treed7bd6fa7696fbee06befee2c79bf1d495d5b3d00 /.config/waybar/modules/covid.sh
parentc0b76fb561331af338ee382ce16492f1ff20cf5e (diff)
waybar: update
Diffstat (limited to '.config/waybar/modules/covid.sh')
-rwxr-xr-x.config/waybar/modules/covid.sh39
1 files changed, 22 insertions, 17 deletions
diff --git a/.config/waybar/modules/covid.sh b/.config/waybar/modules/covid.sh
index 9f1860c..e44c108 100755
--- a/.config/waybar/modules/covid.sh
+++ b/.config/waybar/modules/covid.sh
@@ -1,7 +1,10 @@
 #!/bin/sh
 
 set -e
-[ -n "$DEBUG" ] && { set -x; curl_args='-v'; }
+[ -n "$DEBUG" ] && {
+	set -x
+	curl_args='-v'
+}
 
 # check requirements
 for tool in awk curl jq flock; do
@@ -18,30 +21,32 @@ fields='GEN,RS,EWZ,EWZ_BL,BL_ID,cases,cases_per_100k,cases7_per_100k,cases7_bl_p
 # see https://experience.arcgis.com/experience/478220a4c454480e823b17327b2bf1d4
 uri="https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=${fields}&geometry=${lon}%2C${lat}&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelWithin&returnGeometry=false&outSR=4326&f=json"
 
-_data=$(curl -sSL -H 'Accept: application/json' ${curl_args} ${uri} | jq -r '.features[0].attributes')
+_data=$(curl -sSL -H 'Accept: application/json' ${curl_args} "${uri}" | jq -r '.features[0].attributes')
 [ -z "${_data}" ] && printf "{}\n"
 
 HISTFILE=${HOME}/covid-history.csv
-loc=$(printf "${_data}" | jq -r '.GEN')
-last_update=$(printf "${_data}" | jq -r '.last_update')
+loc=$(printf "%s" "${_data}" | jq -r '.GEN')
+last_update=$(printf "%s" "${_data}" | jq -r '.last_update')
 # printf "${_data}" | jq -r '.'
-incidence_f=$(printf "%.1f" $(printf "${_data}" | jq -r '.cases7_bl_per_100k'))
+incidence_f=$(printf "%.1f" "$(printf "%s" "${_data}" | jq -r '.cases7_bl_per_100k')")
 incidence_i=$(printf "%.0f" "${incidence_f}")
 
 # store
-tmp_HISTFILE=$(mktemp -u --tmpdir waybar-module-covid.XXXXX)
-(
-	cat ${HISTFILE}
-	ts=$(printf "${last_update}" | cut -d',' -f1 | tr '.' '-')
-	printf "%s,%s\n" "${ts}" "${incidence_f}"
-) | uniq | tee ${tmp_HISTFILE} >/dev/null
-flock -x ${HISTFILE} mv ${tmp_HISTFILE} ${HISTFILE}
+if [ -n "${last_update}" ] && [ -n "${incidence_f}" ]; then
+	tmp_HISTFILE=$(mktemp -u --tmpdir waybar-module-covid.XXXXX)
+	(
+		cat "${HISTFILE}"
+		ts=$(printf "%s" "${last_update}" | cut -d',' -f1 | tr '.' '-')
+		printf "%s,%s\n" "${ts}" "${incidence_f}"
+	) | uniq | tee "${tmp_HISTFILE}" >/dev/null
+	flock -x "${HISTFILE}" mv "${tmp_HISTFILE}" "${HISTFILE}"
+fi
 
-mxy=$(awk -F',' '{y=y+$2} END{print ((NR*(NR+1))/2)/NR, y/NR}' "${HISTFILE}")
-trend=$(awk -F',' --assign="mx=$(printf "$mxy" | cut -d' ' -f1)" --assign="my=$(printf "$mxy" | cut -d' ' -f2)" '{up= up+(NR-mx)*($2-my); down= down+(NR-mx)**2} END{if(down==0){print 0}else{print up/down};}' "${HISTFILE}")
+mxy=$(tail -n 7 "${HISTFILE}" | awk -F',' '{y=y+$2} END{print ((NR*(NR+1))/2)/NR, y/NR}')
+trend=$(awk -F',' --assign="mx=$(printf "%s" "$mxy" | cut -d' ' -f1)" --assign="my=$(printf "%s" "$mxy" | cut -d' ' -f2)" '{up= up+(NR-mx)*($2-my); down= down+(NR-mx)**2} END{if(down==0){print 0}else{print up/down};}' "${HISTFILE}")
 trend_arrow="󰔴"
-[ $(printf "%.0f" ${trend}) -gt 0 ] && trend_arrow="󰔵"
-[ $(printf "%.0f" ${trend}) -lt 0 ] && trend_arrow="󰔳"
+[ "$(printf "%.0f" "${trend}")" -gt 0 ] && trend_arrow="󰔵"
+[ "$(printf "%.0f" "${trend}")" -lt 0 ] && trend_arrow="󰔳"
 
 color='green'
 if [ "${incidence_i}" -eq "0" ]; then
@@ -71,7 +76,7 @@ tooltip="
 last update: ${last_update}
 
 history (${trend_arrow}):
-$(awk -F, '{print $1 " " $2}' ${HISTFILE} | tail -n10)
+$(awk -F, '{print $1 " " $2}' "${HISTFILE}" | tail -n10 | tac)
 "
 
 jq -nr \