mirror of
https://github.com/kmein/niveum
synced 2026-03-19 19:41:08 +01:00
feat(scripts): meteo
This commit is contained in:
@@ -119,6 +119,7 @@ in {
|
|||||||
scripts.playlist
|
scripts.playlist
|
||||||
scripts.devanagari
|
scripts.devanagari
|
||||||
scripts.betacode # ancient greek betacode to unicode converter
|
scripts.betacode # ancient greek betacode to unicode converter
|
||||||
|
scripts.meteo
|
||||||
nur.repos.kmein.mahlzeit
|
nur.repos.kmein.mahlzeit
|
||||||
# nur.repos.kmein.slide
|
# nur.repos.kmein.slide
|
||||||
nur.repos.kmein.vimv
|
nur.repos.kmein.vimv
|
||||||
|
|||||||
@@ -94,6 +94,12 @@ in rec {
|
|||||||
name = "tag";
|
name = "tag";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
meteo = wrapScript {
|
||||||
|
packages = [ pkgs.jq pkgs.curl pkgs.xdotool pkgs.sxiv pkgs.gnused ];
|
||||||
|
script = ./meteo.sh;
|
||||||
|
name = "meteo";
|
||||||
|
};
|
||||||
|
|
||||||
booksplit = wrapScript {
|
booksplit = wrapScript {
|
||||||
packages = [ pkgs.ffmpeg tag ];
|
packages = [ pkgs.ffmpeg tag ];
|
||||||
script = "${voidrice}/.local/bin/booksplit";
|
script = "${voidrice}/.local/bin/booksplit";
|
||||||
|
|||||||
76
packages/scripts/meteo.sh
Executable file
76
packages/scripts/meteo.sh
Executable file
@@ -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(".*<option value=\"/\\?map=Deutschland&station=(?<station>[0-9]+)\">(?<name>[^<]+)</option>";"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
|
||||||
Reference in New Issue
Block a user