Side-Project-Tagebuch: recex (1)

Also, der Name ist natürlich noch Work-In-Progress. Ich fand es witzig, weil es wie “regex” klingt. Aber natürlich hat der Recipe Explorer erstmal nichts mit Regulären Ausdrücken zu tun.

Folgendes Problem: Seit mehr als einem Jahr ernähren wir uns eigentlich fast nur noch von Gerichten, die über eine der mittlerweile über einhundert HelloFresh-Rezeptkarten gekocht wurden. Das ist an und für sich ziemlich gut, denn, wenn es ans Einkaufen geht, geht man halt zum Stapel, zieht ein paar Karten und sucht sich aus, was man essen will — im Grunde fast so, wie die wöchentliche Wahl der drei Gerichte auf der HelloFresh-Webseite (ja, für neue Inspirationen, und aus Faulheit, kommt da immer noch fast jede Woche ein Paket).

Umso mehr Karten es werden, wird es natürlich immer anstrengender. Die Stapel werden groß und schwer und man hat keine Lust mehr sie zu transportieren. Außerdem ist es nervig, die Zutatenliste immer von Hand abzuschreiben und bei vielen Rezepten haben wir mittlerweile Sachen verbessert, die natürlich einfach mit Kuli auf den Zettel notiert wurden.


Als ich Blogchain baute, kam ich schon mal kurz vom Pfad ab und schrieb zumindest ein paar Templates um auch Rezepte anzeigen zu können. Des Weiteren baute ich ganz viel Quatsch, z.B. etwas, das alle Vorkommnisse von Texten wie “für 10-15 Minuten in den Backofen” automatisch durch einen “Timer starten” Button ersetzt. Spielerei!


Ein großer Roadblock war für mich bisher, das ich keine Lust hatte 100 Rezepte abzutippen. Heute fiel mir ein, manchmal braucht sowas bei mir echt lange, dass die HelloFresh-Webseite ja eine (mittelmäßig gut funktionierende) Single-Page-App ist und damit sicher eine REST-API hat, über die man sicher alle Rezepte strukturiert ziehen kann. Denn auf der Webseite sind sie ja auch sichtbar!

Es dauerte keine 30 Minuten und ich hatte alle Rezepte aus der API gepult und lokal zur weiteren Verarbeitung gespeichert. Ein Hoch auf JSON-APIs! Falls ihr ähnliches vorhabt, viel Spaß, die eine Zeile file_get_contents-PHP-Code muss ich wohl nicht auf Github stellen 🤓


Natürlich ist das nur die halbe Miete. Die Datenbasis musste etwas aufgehübscht werden (z.B. gibt es ca. 25 verschiedene Zutaten namens “Salz”), und natürlich brauchte ich ein Interface, das die ganzen Rezepte jetzt anzeigt, ein “Zeig mir zufällig sechs Stück, damit ich drei auswählen kann”-Feature und, das allerwichtigste: Einen Einkaufslisten-Generator, der automatisch alles zusammenfasst und mit einem Button-Klick alles in die “Supermarkt”-Liste in Todist schickt.

Tja, und wie das alles aussieht, zeige ich euch beim nächsten Mal, denn statt den Todoist-OAuth zu implementieren, schrieb ich gerade diesen Post!

Kommentare, Feedback und andere Anmerkungen? Schreib mir auf Mastodon oder eine E-Mail 🤓