Bento als Rezeptdatenbank

In den nächsten Tagen und Wochen stehen eine Menge Dinge an, die ich in der wenigen, mir zur Verfügung stehenden Freizeit (Männer-Jammer-Modus aktiviert) zu erledigen haben. Darunter sind so unschöne Sachen wie die Steuererklärung. Nebenbei gilt es noch, die Korrekturfahne des WordPress Buches zu lesen, damit es auch tatsächlich im Juni erscheint. Damit im Zusammenhang steht dann ein komplettes Redesign meines Blogs und, ganz vergessen, ich bin dabei, ein paar neue Buchbaustellen aufzumachen.

Für eine der vielen Baustellen, die aber vorerst rein privater Natur ist, habe ich in den letzten Tagen eine zumindest aus meiner Sicht pfiffige Lösung erarbeitet. Wie bereits bekannt sein dürfte, programmiere ich nicht nur gerne, sondern koche mit ebensolcher Leidenschaft. Programmieren und Kochen – für mich sind das zwei Seiten einer Medaille. In einer Buchhandlung kann mit mich daher an genau zwei Stellen finden. Entweder bei den Kochbüchern oder bei in der EDV-Abteilung. Wobei letzter in den meisten Buchhandlungen ernüchternd klein ist.

Die Leidenschaft bringt es so mit sich, dass DER CHEF und ich eine ziemliche Anzahl an Kochbüchern und Zeitschriften haben. Mit der Zeit sind daraus durch Modifikationen und Erfahrung ein Haufen Rezepte geworden, die wird häufiger verwenden. Die sind auf Bücher, Schmierzettel, Ausdrucken und Kopien verteilt. Nicht gerade übersichtlich. Aus der Sicht eines Programmierers liegt es natürlich nahe, dass alles in eine große Datenbank zu packen.

Bisher ist das aber an mehreren Punkten gescheitert. Zum einen möchte ich die Rezepte auch in kompakter Form mitnehmen können, wofür sich das iPhone anbietet. Zum anderen habe ich Rezepte auch sehr gerne in einer gedruckten Form, weil es beim kochen einfach wesentlich praktischer (und ungefährlicher) ist.

Vor rund zwei Wochen wurde für das iPhone Bento veröffentlich, als Ergänzung zu Mac OS X Desktop-Applikation. Das schöne an den beiden Applikationen ist, dass man sie miteinander synchronisieren kann. Sicher, Bento hat hat längst nicht die Power einer echten Datenbank, aber als „Database for the rest of us” ist das Programm auf jeden Fall eine schöne Sache. Mal eben schnell eine Tabelle anlegen, Formular gestalten, fertig. Damit lassen sich dann wunderbar Rezepte erfassen, die auch auf dem iPhone zur Verfügung stehen.

Ein Problem war damit für mich aber noch nicht gelöst: die Ausgabe der Daten in ansprechender Form. Das was Bento ausspuckt, sieht nicht wirklich hübsch aus. Zudem fehlt, wenn man die Komplette Sammlung mal als Kochbuch betrachtet, so was wie ein Inhalts- und Stichwortverzeichnis. Beides Dinge, die sich sehr schön mit LaTeX erledigen lassen. Nun, aber wie kommen die Rezepte aus der Datenbank in ein LaTeX-Dokument? Kopieren und einfügen ist wohl kaum der richtige Weg. Am liebsten wäre mir ja ein Knopfdruck, und ich hätte automatisch eine TeX-Datei und ein fertiges PDF.

Um ein wenig die Spannung zu nehmen:genau das habe ich jetzt auch. Ich rufe in der Menüleiste ein Apple-Script auf und erhalte ein fertiges PDF mit Deckblatt, Kapitel, Inhaltsverzeichnis und Index nebst TeX-Datei, um falls Bedarf besteht, manuell noch mal nachzubessern.

Der Weg dahin ist allerdings nicht ganz so einfach gewesen. Zuerst galt es, sich mit der Datenbank, die hinter Bento steht, auseinander zu setzten. Nach etwas Recherche wusste ich, dass es eine SQlite 3 Datenbank ist – auf dem Mac verwenden einige Programme diese vom Betriebsystem unterstützte Datenbankformat, zum Beispiel Apple Mail oder NetNewsWire. Im nächsten Schritt galt es dann, über einen lokalen Webserver und PHP die Datenbank auszulesen (hilfreich dabei: es gibt eine FireFox Extension, die SQlite Datenbanken öffnen und anzeigen kann). Die Datenbank findet sich im folgenden Verzeichnis (Benutzername muss angepasst werden):

Users/benutzername/Library/Application Support/Bento/bento.bentodb/Contents/Resources/Database

Das Resultat war dann ein Array mit den Informationen, die sich auf die eingrenzen ließen, die von mir benötigt wurden. Unbefriedigend dabei war aber, dass ich immer erst den Webserver starten musste.

Unter Mac OS X ist das aber leicht anders zu lösen, denn PHP steht auch im Terminal zur Verfügung:

php meintollesscript.php

Damit fiel dann der Webserver weg. Über Apple Script konnte ich das PHP-Script wiederum aufrufen, so dass ich nicht jedes mal manuell ins Terminal wechseln musste. Zusammen mit einem Template-Script entstand dann ein PHP-Skript, was die ausgelesenen Daten in eine LaTeX-Datei schrieb. Soweit, so gut. Die musste dann natürlich noch übersetzt werden. Auch dafür gab es eine recht einfache Lösung, denn natürlich steht LaTeX, wenn es denn installiert wurde, im Terminal zur Verfügung. Mit shell_exec und exec war es möglich, von PHP die entsprechenden Befehl aufzurufen.

Hört sich alles verrückt an? Nun, das Ergebnis sieht auf jeden Fall sehr lecker aus! Und wer weiß, wenn ich genügend Rezepte zusammen habe, gebe ich das Ergebnis irgendwo in eine Online-Druckerei.

Kommentar verfassen