Datenguthaben von Aldi Talk auslesen

Begonnen von loescher, 13 Dezember 2021, 20:29:44

Vorheriges Thema - Nächstes Thema

loescher

Hi!

Ich möchte euch gerne mal eine etwas unkonventionelle Lösung vorstellen.
Mein Ziel war:
Ich wollte mein Aldi Talk Daten Restguthaben in FHEM anzeigen lassen.

Das Auslesen aus dem Kundenportal per HTTPMOD oder curl war leider nicht von Erfolg gekrönt.
(Falls nun jemand sagt: Ist doch ganz einfach, dann wäre ich auch daran sehr interessiert...)

Daher suchte ich nach einer anderen Variante und kam auf lynx.
Dieser Konsolen-Browser kann eine Session mit allen Tastatureingaben speichern und später wiederholen.
Also wie folgt starten und damit das Kunden-Login aufzeichnen:

lynx -cmd_log=~/get_aldi_talk_freies_datenvolumen.lys -accept_all_cookies https://www.alditalk-kundenbetreuung.de/de


Zugangsdaten eingeben, lynx beenden.
Dann kann man das Ganze in ein kleines Script packen, welches regelmäßig per cron läuft, das Ergebnis aus der Webseite ausliest und in ein Logfile schreibt:

TERM=vt100
script -c 'lynx -cmd_script=~/get_aldi_talk_freies_datenvolumen.lys -accept_all_cookies https://www.alditalk-kundenbetreuung.de/de' /tmp/$$ >/dev/null 2>&1
DATE=$(perl -ne 'print "$1" if /Verfügbar bis.+\x0f(.+ Uhr)/' < /tmp/$$)
MB=$(perl -ne 'print "$1" if /Verbleibendes Datenvolumen.+?\x0f(\d+)/' < /tmp/$$)
if [ ! -z "$MB" ]
then
  echo "$MB MB (bis $DATE)"
fi

Und dann noch dieses Logfile in FHEM einlesen und den Wert (z.B. "932 MB (bis Dienstag, 04.01.2022 23:59 Uhr)") als Reading darstellen:

defmod di_AldiTalk_Verbleibende_MB DOIF ([+[1]:05])
attr di_AldiTalk_Verbleibende_MB state {(qx(tail -1 /tmp/get_aldi_talk_freies_datenvolumen.log))}
attr di_AldiTalk_Verbleibende_MB do always
attr di_AldiTalk_Verbleibende_MB alias AldiTalk Guthaben
attr di_AldiTalk_Verbleibende_MB comment Liest das Ergebnis des Skripts get_aldi_talk_freies_datenvolumen immer 5 Minuten nach der vollen Stunde aus dem Logfile und stellt damit das verbleibende Datenvolumen in der aktuellen Periode von Aldi Talk in einem Reading dar.


Ich hoffe, das kann der eine oder andere brauchen, wenn er auch eine Webseite mit etwas "kompliziertem" Login auslesen muss.

LG,
Stephan.