Earlier this year I have posted an article on how I managed to gather and persist calories from FDDB.info. As I have grown more interested in macro-nutrients, I had a look into extending my application to gather more data. Unfortunately this resulted in a complete rewrite, as the approach I took in March relied on the CSV export from FDDB, which does not contain data about consumed sugars.
Looking into FDDB and their exports I soon realized I had parse the HTML of their website, because the needed data is only present on there and not contained in any structured exports. Making use of my knowledge about their site from my earlier exporting approach I started up IntelliJ and decided to create a second Micronaut application, after my first steps with it in the Datadog metrics project. The tool I have created can be found on my Github account:
This tool exports the following data on a daily basis: kcal, fat, carbs, sugar, protein, fiber. To achieve this Micronaut runs a scheduler which gathers the data for the day before at night. The retrieved data is then written to a Postgres database. To gather data of previous days, weeks and months I implemented a HTTP endpoint which can be called by appending /batch
to the context route and sending a POST request containing the following JSON:
{ "fromDate": "2021-05-13", "toDate": "2021-08-18" }
The data is then persisted to the Postgres database for each day. Having all the data in Postgres present makes it quite easy to create some graphs to track the consumption of macro-nutrients. Grafana makes this quite easy:
For the prerequisites see my earlier post explaining how to obtain the necessary cookies for FDDB.info to allow HTTP requests to access your login.
philp
braucht das dockerimage die gleichen ENV variablen wie die alte version?
leider connected postgres bei mir nicht…
logs
https://file.io/Dt80xdbIZZVJ
thx!
Tobey
Hey, nein, das sind andere Variablen, sofern du mit alte Version das Python Skript meinst. Ich habe hier die Readme aktualisiert mit einem Beispiel der Umgebungsvariablen: https://github.com/itobey/fddb-exporter#using-the-image
phililpp
danke bin etwas weitergekommen 🙂
ich seh bei fddb.info meine entraege aber der log schreibt nur
15:03:25.074 [default-nioEventLoopGroup-1-3] ERROR com.itobey.adapter.api.fddb.exporter.service.HtmlParser – no value found for kcal, there might be no data available for the specified day,
15:03:25.074 [default-nioEventLoopGroup-1-3] WARN com.itobey.adapter.api.fddb.exporter.service.ManualExportService – data for date 2023-03-17 cannot be parsed, skipping this day
Tobey
Cool 🙂 Ich vermute, dass dein Cookie oder Basicauth nicht passt. Ich werde in den nächsten Tagen / Wochen mal eine überarbeitete Version veröffentlichen, um da eine bessere Fehlermeldung zu loggen.
Tobey
Ich habe mir das Thema heute mal angeschaut und das Problem ist tatsächlich eine Änderung von FDDB. Hier hat sich das Placement des Login Buttons geändert und deshalb ist mein Fehlerhandling nicht angeschlagen. Ich habe einen Fix veröffentlicht, du kannst dir das Image unter der Version 0.2.1 laden, dann bekommst du eine korrekte Meldung, wenn der Login nicht funktioniert.
Bryn
Is there a step by step guide on how to do this? I have no idea what a Postfgres database is, I just want to count my calories in the My Fitness Pal or the FDDB app, which I just signed up as a premium member for the latter because of your recommendation 🙂 but I had no idea it would be so complicated from there on. Your explanation above is likely very helpful to the trained eye and ear, but I’m not there yet. But I follow step by step instructions really well 🙂 Is there a video in English or something that shows how to do this? PLEEEZE!
Tobey
I’m not sure I understand your issue. If you just want an app to track your calories, just use the fddb app you can find in the Google Playstore and the Apple Appstore. This blog post deals with exporting the data you entered in there to have all your data in a database. You will most likely not need this. 😉
BKH
I don’t just want a calorie counting app, I want a full dashboard that I can bring in my health metrics, calorie count, exercise; blood pressure etc into. I have some amazing dashboards I created in HA, but getting the health data and food data in there is a nightmare.
I recently found an app called Heads Up Health, which is amazing, it brings together pretty much every app that exists… but the one thing it doesn’t do yet is integrate with Home Assistant. If there was an English version of your video, even subtitled, I think I could probably wing it to figure it out but so far you seem to be the gatekeeper on how to do this because I’ve searched all over and haven’t found an English explanation of what I think is explained in this German video. It’s very frustrating 😉
Tobey
What video? I did not create any video. I think you may have something wrong here! 🙂 The application I created just gets the data from fddb and exports the data to a database. If you’re not proficient in computer programming you’re probably going to have a hard time integrating the data from a database to your dashboard. I’m sorry I cannot provide a simple solution for you.
HNA
Danke für das coole Tool, hab es tatsächlich recht schnell zum Laufen bekommen!
Ich vermute mal, an die Details der einzelnen Mahlzeiten (also nicht Tage- sondern Mahlzeitweise aggregiert, oder direkt die Daten der einzelnen Lebensmittel) kommt man nicht so ohne weiteres, oder?
In der Detailansicht im “Ernährungstagebuch” stehen die ja auch in der Form drin, sind das die Seiten die du abgreifst?
Tobey
Freut mich, dass es dir gefällt! Exakt, ich greife die Detailansicht des Ernährungstagebuchs zu jedem eingestellten Tag ab. Man kommt also recht leicht dran, bisher war das aber einfach nicht von Interesse für mich. Ich hatte tatsächlich vor irgendwann einmal demnächst eine neue Version zu erstellen, da ich auch an den eingetragenen Lebensmitteln interessiert bin. In dem Zuge könnte ich das dann mit umsetzen. Allerdings kann ich wirklich nicht sagen, wann ich dazu kommen werde, das könnte sich noch eine ganze Weile ziehen. Wenn du willst, dass ich dich dann informiere, dann schick mir einfach kurz per Kontaktformular deine E-Mail Adresse (oder trag sie beim Antworten auf diesen Kommentar ein) – oder du beobachtest einfach mein Github Repository. Eventuell schreibe ich dann auch einen neuen Blog Post.
HNA
Danke für die schnelle Antwort!
Wäre natürlich cool, wenn du das umgesetzt bekommst, bis dahin werd ich mich wohl mit dem csv export begnügen.
Mail hab ich da gelassen, und das Repo behalte ich auch im Auge 😉
Tobey
Ich habe eine neue Version veröffentlicht, siehe hier