Open Source im professionellen Einsatz
Linux-Magazin 05/2008
© philiph, photocase.com

© philiph, photocase.com

Perl-Skript überwacht Preise bei Amazon

Geiz ist geil

Ein Perl-Skript verfolgt für Schnäppchenjäger die Preisentwicklung auf Amazon und schlägt per E-Mail freudig Alarm, falls sich überwachte Produkte plötzlich verbilligen.

556

Soll ich die Digitalkamera, die ich mir so sehnlichst wünsche, gleich heute kaufen? Oder lieber noch darauf warten, dass sie morgen vielleicht billiger zu haben ist? Keine leichte Frage, aber ein Blick auf die Kamerapreise der letzten Monate verrät mir vielleicht, mit welcher Preisentwicklung ich wahrscheinlich rechnen kann.

Böte Amazon nach dem Vorbild der Aktienkurse auf großen Finanzseiten die Preisentwicklung der gehandelten Produkte, dann würde sich der Kunde unter Umständen ärgern, wenn er ein Angebot verpasst hat. Oder aber er spekuliert dann erst recht darauf, dass sich der Preisverfall noch fortsetzt und ihm bald günstigere Konditionen beschert. Einige Preisvergleichs-Seiten bieten eine solche Historie-Funktion, mitteln dabei allerdings den Preis aller Anbieter und verraten an dieser Stelle nicht, wer den Tiefpreis-Rekord hält.

Nun bietet aber der Versandhändler Amazon noch keine Statistik der Preisentwicklung an und wird das womöglich auch niemals tun. Das macht nichts - es ist nämlich nicht übermäßig schwer, sich diese Funktion mit einem kleinen Perl-Skript selber nachzurüsten.

Das hier vorgestellte Skript »amtrack« (Listing 1) liest eine Konfigurationsdatei »~/.amtrack-rc« nach Abbildung 1 aus, um herauszufinden, für welche Artikel der Benutzer sich interessiert. Ein Cronjob ruft es in regelmäßigen Abständen auf, wobei es sich jedes Mal mit dem Amazon-Webservice verbindet, die aktuellen Preise aller konfigurierten Artikel abfragt und sie in einer lokal angelegten SQLite-Datenbank speichert.

Abbildung 1: Die Konfigurationsdatei »~/.amtrack-rc« listet alle zu überwachenden Produkte samt ihren Amazon-eigenen ASIN-Nummern auf.

Alarm bei Preisverfall

Sinkt der Preis eines Artikels, schickt das Skript eine E-Mail mit der Produkt-URL und dem derzeit aktuellen Preis an die in Zeile 79 voreingestellte E-Mail-Adresse. Der erfreute Schnäppchenjäger braucht dann nur noch in seinem E-Mail-Client auf die angegebene URL zu klicken, um sofort danach im Browser einen letzten Blick auf das Produkt zu werfen und es anschließend spontan zu kaufen.

Da die Preise in einer Datenbank liegen, kann das Skript selbst historische Daten ohne Weiteres abfragen und darstellen. Der Aufruf »amtrack -l« liefert die zuletzt eingeholten Preise aller überwachten Produkte (Abbildung 2). Den gesamten Inhalt der Datenbank gibt die Option »-a« aus, das kann sich nach längerer Laufzeit des Preiswächters allerdings etwas in die Länge ziehen.

Abbildung 2: Beim Aufruf mit der Option »-l« listet Amtrack die aktuellen Preise aller zur Überwachung eingetragenen Produkte.

Ganz ohne Optionen aufgerufen, arbeitet sich »amtrack« durch die in der Konfigurationsdatei »~/.amtrack-rc« definierten Produktkürzel und frischt die Datenbank mit den aktuellen Preisen auf.

Die Konfigurationsdatei besteht aus zwei Spalten: In der ersten steht die ASIN-Nummer des gewünschten Produkts und rechts, durch ein oder mehrere Leerzeichen getrennt, eine kurze Produktbeschreibung. Die ist zwar für die Datenbank unwesentlich, erweist sich aber für die übersichtliche Darstellung in den E-Mails als nützlich. Kommentarzeilen fangen mit »#« an, das Skript ignoriert sie ebenso wie Leerzeilen.

Die Funktion »config_read()« ab Zeile 92 in Listing 1 liest die Konfiguration ein und gibt zwei Referenzen zurück: eine auf einen Array »@config« und eine auf einen Hash »%config«. Während der Array Wertepaare aus ASIN und Beschreibungen enthält, weist der Hash den ASINs ihren zugehörigen Text zu.

Bei Amazon wühlen

Das CPAN-Modul Net::Amazon bildet eine objektorientierte Schnittstelle zu Amazons REST-basiertem Webservice. Der Anwender gibt einfach die so genannte ASIN-Nummer eines Produkts an - und schon kontaktiert das Modul Amazon und holt den Preis ein.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Amazon-As

    Dem Beispiel des famosen Suchdienstes Google folgend, bietet nun auch das virtuelle Kaufhaus Amazon.com seinen Produktkatalog per XML und Webservice an. Perl-Programmierer nutzen dies und suchen gezielt nach Produkten und Preisen.

  • Laufzeit-Tacho

    Statt hochgezüchteter Prozessoren helfen oft schon simple Tricks, um Programme zu beschleunigen. Profiler können Engpässe entdecken, in die es sich lohnt, Entwicklungszeit zu investieren.

  • Leserbriefe

    Haben Sie Anregungen, Statements oder Kommentare? Dann schreiben Sie an [redaktion@linux-magazin.de]. Die Redaktion behält es sich vor, die Zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge mit Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht.

  • Tooltipps
  • Kurvendiskussion

    Zahlenreihen taugen vielleicht für gelangweilte Buchhalter, nicht aber für Programmierer. Die bevorzugen Grafiken, besonders wenn sie den Wertverlauf ihres Aktienportfolios beschreiben. Das vorgestellte Perl-Skript zeichnet Turmdiagramme und hilft die Performance im Auge zu behalten.

comments powered by Disqus

Ausgabe 09/2017

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.