From bd200b655d7ccfd158e1184234622bddcc2b1c2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Wed, 7 Apr 2021 09:45:36 +0200 Subject: [PATCH] feat(scripts): meteo --- configs/packages/default.nix | 1 + packages/scripts/default.nix | 6 +++ packages/scripts/meteo.sh | 76 ++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100755 packages/scripts/meteo.sh diff --git a/configs/packages/default.nix b/configs/packages/default.nix index ffe77bc..a66fee3 100644 --- a/configs/packages/default.nix +++ b/configs/packages/default.nix @@ -119,6 +119,7 @@ in { scripts.playlist scripts.devanagari scripts.betacode # ancient greek betacode to unicode converter + scripts.meteo nur.repos.kmein.mahlzeit # nur.repos.kmein.slide nur.repos.kmein.vimv diff --git a/packages/scripts/default.nix b/packages/scripts/default.nix index 714d6f1..9591022 100644 --- a/packages/scripts/default.nix +++ b/packages/scripts/default.nix @@ -94,6 +94,12 @@ in rec { name = "tag"; }; + meteo = wrapScript { + packages = [ pkgs.jq pkgs.curl pkgs.xdotool pkgs.sxiv pkgs.gnused ]; + script = ./meteo.sh; + name = "meteo"; + }; + booksplit = wrapScript { packages = [ pkgs.ffmpeg tag ]; script = "${voidrice}/.local/bin/booksplit"; diff --git a/packages/scripts/meteo.sh b/packages/scripts/meteo.sh new file mode 100755 index 0000000..7e91201 --- /dev/null +++ b/packages/scripts/meteo.sh @@ -0,0 +1,76 @@ +#! /bin/sh +# usage: meteo --list +# usage: meteo --update +# usage: meteo STATION +set -efu + +# TODO XDG +CONFIG_DIR=$HOME/.config/wetter +STATIONS_FILE=$CONFIG_DIR/stations.json + +case ${1-} in + --list) + sed -n 's/^\s*\(--[^)]\+\))$/\1/p' "$0" + jq -r -n \ + --slurpfile stations_file "$STATIONS_FILE" \ + ' + $stations_file[0] as $known_stations | + + $known_stations | keys[] + ' + exit + ;; + --update) + mkdir -p "$(dirname "$STATIONS_FILE")" + exec >"$STATIONS_FILE" + + curl -fsS http://wetterstationen.meteomedia.de/ | + jq -Rrs ' + def decodeHTML: + gsub("ä";"ä") | + gsub("ö";"ö") | + gsub("ü";"ü") | + gsub("Ä";"Ä") | + gsub("Ö";"Ö") | + gsub("Ü";"Ü") | + gsub("ß";"ß") + ; + [ + match(".*";"g") + .captures | + map({"\(.name)":(.string)}) | + add | + {"\(.name|decodeHTML)":(.station|tonumber)} + ] | + add + ' + exit + ;; +esac + +# set -x + +station=${1-103840} +station=$(jq -e -n \ +--arg station "$station" \ +--slurpfile stations_file "$STATIONS_FILE" \ +' + $stations_file[0] as $known_stations | + + $station | + if test("^[0-9]+$") then + tonumber + else + $known_stations[.] + end +') +cache="/tmp/${LOGNAME}_wetter_$station.png" +curl -sS \ + "http://wetterstationen.meteomedia.de/messnetz/vorhersagegrafik/$station.png" \ + -o "$cache" + +if window_id=$(xdotool search --name "^sxiv - $cache$"); then + xdotool key --window "$window_id" r +else + sxiv "$cache" & +fi