context and motivation for kobogarden
I like (although I not always prefer) reading physical books. After losing my previous e-reader, I got a second-hand Kobo Glo HD. It's an old model, but almost everything works as intended (not really for the wi-fi connectivity, due to some SSL certificate shenanigans, and there is no red-tinted backlight). I've been reading digitally for many years, now, and it's my preferred medium for tackling non-fiction.
Digital books (e-books) are sort of the intermediate step between paper and the internet; it has allowed for some nice things. Some people are wary, though.
Of course, I take lots of bookmarks and notes in the device, and felt the need to export them quickly and easily to this platform (otherwise, they'd just get lost and forgotten, and there's some information I'd like to keep handy).
So this turned into a bit of a project since I came from Slovenia, in the beginning of Autumn. Then I stopped, and came back to it very recently. The code is not really relevant for public release — it's a very niche solution to my particular workflow — but it would be nice to have well-organised, documented code in the wild; and maybe it helps someone else.
chosen tech
I wanted to iterate quickly and not go through the hoops of learning a new language: hence, everything is done in Python. 🐍
The project is divided into a scraper utility, that connects to Kobo's sqlite database, and an interface based in Textual, a framework aimed at modern terminal applications. 🖥️
There is also emphasis in some test-driven development, but only on the scraper side.
Here's the source code if you'd like to have a look.
roadmap of the highlight process | bugs and pending work
for the future
I now realise that here lies an opportunity for some further work: by decoupling the highlight extraction from the tiddler creation, this tool could be of some use to other people. As my code is very modular, it would be easy to start developing another kind of interface (web?) to help people retrieve their highlights via the browser.