From ced8266015895bebb2d0f773763a469fb1d88d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 26 Nov 2024 13:41:41 +0100 Subject: gromka_dogodek_dan --- skripti/gromka_dogodek_dan.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100755 skripti/gromka_dogodek_dan.sh diff --git a/skripti/gromka_dogodek_dan.sh b/skripti/gromka_dogodek_dan.sh new file mode 100755 index 0000000..2b13185 --- /dev/null +++ b/skripti/gromka_dogodek_dan.sh @@ -0,0 +1,13 @@ +#!/bin/bash +if [ x$1 = x ] +then +echo uporaba: $0 2024-12-14 >&2 +exit 1 +fi +set -euo pipefail +month=`cut -d- -f1-2 <<<$1` +day=$((`cut -d- -f3 <<<$1`+0)) +line=`curl --fail-with-body --no-progress-meter "http://klubgromka.org/index.php?mode=archive&month=$month" | sed -e 's,src="front/gfx/ddelim.gif">,\n,g' | grep '"prog_date">[a-zčžš]*, '$day'. [a-zčžš]'` +txt=`sed -e 's,^.*

\(.*\)
.*$,\1,g' <<<$line` +nasl=`sed -e 's,^.*>
\(.*\)
.*$,\1,g' <<<$line` +echo $1$'\t'$txt$'\t'$nasl -- cgit v1.2.3 From 815b9fcedda9ed5273d4a95aa0fd8f2219e4a37b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 26 Nov 2024 13:52:51 +0100 Subject: ne_najdem_dneva --- skripti/gromka_dogodek_dan.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/skripti/gromka_dogodek_dan.sh b/skripti/gromka_dogodek_dan.sh index 2b13185..611fbf0 100755 --- a/skripti/gromka_dogodek_dan.sh +++ b/skripti/gromka_dogodek_dan.sh @@ -7,7 +7,15 @@ fi set -euo pipefail month=`cut -d- -f1-2 <<<$1` day=$((`cut -d- -f3 <<<$1`+0)) -line=`curl --fail-with-body --no-progress-meter "http://klubgromka.org/index.php?mode=archive&month=$month" | sed -e 's,src="front/gfx/ddelim.gif">,\n,g' | grep '"prog_date">[a-zčžš]*, '$day'. [a-zčžš]'` +line=`curl --fail-with-body --no-progress-meter "http://klubgromka.org/index.php?mode=archive&month=$month" | sed -e 's,src="front/gfx/ddelim.gif">,\n,g'` +set +e +line=`grep '"prog_date">[a-zčžš]*, '$day'. [a-zčžš]' <<<$line` +if [ ! $? = 0 ] +then + echo $0: ne najdem dogodka na dan $1 ... preveri, da je format dneva LLLL-MM-DD. >&2 + exit 1 +fi +set -e txt=`sed -e 's,^.*

\(.*\)
.*$,\1,g' <<<$line` nasl=`sed -e 's,^.*>
\(.*\)
.*$,\1,g' <<<$line` echo $1$'\t'$txt$'\t'$nasl -- cgit v1.2.3 From 8e1db56f0f719fdecd6705bc40181b15f4c5cca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 3 Dec 2024 23:52:12 +0100 Subject: nlb transmon --- skripti/ponastavi_geslo_ul.sh | 6 ++++-- skripti/spotify_publish_saved.py | 2 +- skripti/transmon.py | 41 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 3 deletions(-) create mode 100755 skripti/transmon.py diff --git a/skripti/ponastavi_geslo_ul.sh b/skripti/ponastavi_geslo_ul.sh index fcc64c0..1c00f5c 100755 --- a/skripti/ponastavi_geslo_ul.sh +++ b/skripti/ponastavi_geslo_ul.sh @@ -10,6 +10,8 @@ read -p "novo geslo: " n p=`rev <<<$0 | cut -d/ -f1 | rev` umask 0077 t=`mktemp -p "" $p.XXX` -trap "rm $t" EXIT +# trap "rm $t" EXIT r=`curl --cookie $t --cookie-jar $t https://id.uni-lj.si/DigitalnaIdentiteta/PonastavitevGesla | grep RequestVerificationToken | tail -n1 | cut -d\" -f6` -curl --cookie $t --cookie-jar $t 'https://id.uni-lj.si/DigitalnaIdentiteta/PonastavitevGesla' -X POST --data-raw "Form.Ime=$i&Form.Priimek=$priimek&Form.DatumRojstva=$d&Form.VpisnaStevilka=$v&Form.OrganizacijaId=$k&Form.Username=$u&Form.NewPassword=$n&Form.NewPasswordConfirmation=$n&__RequestVerificationToken=$r" | grep "ste ponastavili svoje geslo" +curl --cookie $t --cookie-jar $t 'https://id.uni-lj.si/DigitalnaIdentiteta/PonastavitevGesla' -X POST --data-raw "Form.Ime=$i&Form.Priimek=$priimek&Form.DatumRojstva=$d&Form.VpisnaStevilka=$v&Form.OrganizacijaId=$k&Form.Username=$u&Form.NewPassword=$n&Form.NewPasswordConfirmation=$n&__RequestVerificationToken=$r" | sponge $t +grep "ste ponastavili svoje geslo" $t +rm $t diff --git a/skripti/spotify_publish_saved.py b/skripti/spotify_publish_saved.py index a7f737a..20ee647 100755 --- a/skripti/spotify_publish_saved.py +++ b/skripti/spotify_publish_saved.py @@ -39,5 +39,5 @@ for playlist, rev in [("0ASvlSEvlQu5nyFwUZqf9n", False), ("4B9TSgOGQRRvFtOnQav42 if len(publicized_uris) != 0: sp.playlist_remove_all_occurrences_of_items(playlist, publicized_uris) todaystring = datetime.datetime.now().isoformat().replace("T", " ").split(".")[0] - sp.playlist_change_details(playlist, name="public mirror of my liked songs." + " [REVERSED]" if rev else "", public=True, collaborative=False, description=f"updated {todaystring} automatically daily using http://4a.si/spotsync") + sp.playlist_change_details(playlist, name="public mirror of my liked songs." + (" [REVERSED]" if rev else ""), public=True, collaborative=False, description=f"updated {todaystring} automatically hourly using http://4a.si/spotsync --- new songs are added at the " + ("top" if rev else "bottom")) print(json.dumps(saved_items)) diff --git a/skripti/transmon.py b/skripti/transmon.py new file mode 100755 index 0000000..ea59889 --- /dev/null +++ b/skripti/transmon.py @@ -0,0 +1,41 @@ +#!/usr/bin/python3 +# transaction monitor za NLB ... nastavite okoljske spremenljivke SECRET na base32 key za TOTP, USERNAME na nlbklik username, FROM na naslov elektronske pošte, od koder naj pošiljam, TO pa na naslov, kamor naj pošiljam obvestila. +import pyotp +import hashlib +import requests +import smtplib +import json +import os +import time +def login(s): + totp = pyotp.TOTP(os.getenv("SECRET"), 8, hashlib.sha256) + resp = s.post("https://nlbklik.si/api/auth/login", "username=" + os.getenv("USERNAME") + "&password=" + totp.now(), headers={"content-type": "application/x-www-form-urlencoded"}) + if resp.status_code != 200: + print("failed to login!") + print(resp.headers) + print(resp.text) + with smtplib.SMTP("localhost", 587) as server: + server.sendmail(os.getenv("FROM"), os.getenv("TO"), "Subject: transmon failed to login!\r\n\r\n" + json.dumps({"resp": {"status_code": resp.status_code, "headers": dict(resp.headers), "text": resp.text}})) + exit(1) +def main(): + alr = set() # set of ids already notified + s = requests.Session() + while True: + print(".", end="", flush=True) + resp = s.get("https://nlbklik.si/api/arrangement-manager/client-api/v2/productsummary") + if resp.status_code == 401: + login(s) + continue + for acc in resp.json()["currentAccounts"]["products"]: + resp = s.get("https://nlbklik.si/api/transaction-manager/client-api/v2/transactions?size=69&from=0&direction=DESC&orderBy=bookingDate&arrangementId=" + acc["id"]) + if len(alr) == 0: + for tx in resp.json(): + alr.add(tx["id"]) + for tx in resp.json(): + if tx["id"] not in alr: + with smtplib.SMTP("localhost", 587) as server: + server.sendmail(os.getenv("FROM"), os.getenv("TO"), "Subject: transmon " + tx["transactionAmountCurrency"]["amount"] + " " + tx["transactionAmountCurrency"]["currencyCode"] + " " + tx["description"] + "\r\n\r\n" + json.dumps({"tx": tx, "acc": acc}, indent="\t")) + alr.add(tx["id"]) + time.sleep(1) +if __name__ == "__main__": + main() -- cgit v1.2.3 From 9914e241a067fe580b5658afb9a35497a696475b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Wed, 4 Dec 2024 00:05:44 +0100 Subject: =?UTF-8?q?transmon=20obvesti=20ob=20loginu,=20da=20te=20ni=20stra?= =?UTF-8?q?h=20kdo=20se=20je=20prijavil=20v=20tvoj=20nlbklik=20ko=20dobi?= =?UTF-8?q?=C5=A1=20sms=20od=20nlb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skripti/transmon.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/skripti/transmon.py b/skripti/transmon.py index ea59889..e175f1c 100755 --- a/skripti/transmon.py +++ b/skripti/transmon.py @@ -17,6 +17,8 @@ def login(s): with smtplib.SMTP("localhost", 587) as server: server.sendmail(os.getenv("FROM"), os.getenv("TO"), "Subject: transmon failed to login!\r\n\r\n" + json.dumps({"resp": {"status_code": resp.status_code, "headers": dict(resp.headers), "text": resp.text}})) exit(1) + with smtplib.SMTP("localhost", 587) as server: + server.sendmail(os.getenv("FROM"), os.getenv("TO"), "Subject: transmon se je prijavil v " + os.getenv("USERNAME") + "\r\n\r\n") def main(): alr = set() # set of ids already notified s = requests.Session() -- cgit v1.2.3