[Codeschnipsel] Cashback Deals von sparwelt.de auslesen und als Reading speicher

Begonnen von t1me2die, 16 Mai 2019, 10:35:35

Vorheriges Thema - Nächstes Thema

t1me2die

Moin liebes Forum,

ZitatZur Info: Habe von HTTPMOD auf einen Dummy mit HttpUtils_NonblockingGet() umgestellt, da meine alte RegEx nicht mehr wie gewünscht funktioniert hat!

ich möchte Euch heute gerne meinen Code vorstellen, zum Auslesen der Cashback Deals von der Website: https://www.sparwelt.de/gratis/cashback inklusive Aufbereitung der Deals als Reading.

Konfiguration / Definition (RAW):

define Sparwelt dummy
attr Sparwelt room Sparwelt


Die 99_myUtils_Sparwelt.pm besteht z.Z. aus fünf Routinen:

  • myUtils_Sparwelt_PerformHttpRequest()
  • myUtils_Sparwelt_ParseHttpResponse($)
  • setDealsFromSparwelt($)
  • getNewDealsFromSparwelt($)
  • getOldDealsFromSparwelt($)

Beschreibung:

  • myUtils_Sparwelt_PerformHttpRequest() liest per HttpUtils_NonblockingGet die Seite (https://www.sparwelt.de/gratis/cashback) aus und schreibt die Readings in den Dummy.
    Nun sollten alle Cashback Deals aufbereitet als Reading vorhanden sein.
    Ich habe mir persönlich ein "at" angelegt um die Readings 1x am Tag aufzubereiten (das kann aber jeder machen, wie er es selber für richtig erachtet)
    Zur Info: Beim ersten aufrufen dieser Funktion erhalten alle Deals den Status "*new", bei einem erneuten Aufruf der Funktion erhalten diese Deals dann den Status "*old".
    Zum aufrufen kann man einfach in die Kommandozeile folgendes eingeben:
{ myUtils_Sparwelt_PerformHttpRequest() }


  • getNewDealsFromSparwelt($) ermittelt neue Cashback Deals und gibt diese als return Wert "$info" zurück.
    - Als Parameter wird der Dummy erwartet
    Ich verwende den return Wert "$info" um mir eine Telegram Nachricht zuzuschicken

  • getOldDealsFromSparwelt($) ermittelt die letzten zehn Cashback Deals und gibt diese als return Wert "$info" zurück (möchte man mehr als zehn Deals haben, so muss man Zeile 226 dementsprechend anpassen)
    - Als Parameter wird der Dummyerwartet
    Ich verwende den return Wert "$info" um mir eine Telegram Nachricht zuzuschicken, daher resultiert auch die Begrenzung auf die "letzten zehn Cashback Deals", weil es sonst die Telegram Nachrichtenlänge sprengt
Ich bin gerne für hilfreiche Kritik oder Wünsche offen, dieser Code wurde von mir nach besten Gewissen getestet und ist sicherlich keineswegs perfekt!
Für Tipps und Tricks und / oder Verbesserungen bin ich offen und auch "lernfähig"  :)

Im Anhang ist ein Screenshot vom Einsatz via Telegram Nachricht.
Des Weiteren ein kleiner Ausschnitt von den Readings und natürlich die 99_myUtils_Sparwelt.pm
Vielleicht dient der Code auch nur als Inspiration für Andere, in diesem Sinne...

Gruß
Mathze