A lot of the reading I do takes place on my Kobo eReader these days and, while reading yesterday, I came across a line that was eminently quotable. So I highlighted it and created an annotation, which is not something I’ve actually bothered to do in the past.
Then I wondered how I was supposed to get the annotation out if the eReader. Not easily appears to be the answer.
Obviously, a one-line quote could easily be retyped, but I’m too lazy to want to type stuff, which is why I ended up spending most of the evening poking around at the innards of the device.
Plugging in a USB cable and displaying the hidden files and folders reveals that there is a folder called .kobo
on the device and, when I go into that folder I find, among other things, these:
- BookReader.sqlite
- KoboReader.sqlite
The sqllite suffix tells me that these are SQLite databases, and that looks like a very promising place to start. So I copied both to my PC and started poking around.
BookReader.sqlite
, it turns out, isn’t a database — or not one that I can access using the sqlite3
— but KoboReader.sqlite
proved to be a lot more promising.
Finding your way around a database when you have no documentation can be a bit of a challenge, but I do know that this:
select distinct b.ShelfName, c.BookTitle, a.Text, a.Annotation, date(a.DateCreated), date(a.DateModified) from Bookmark a left outer join ShelfContent b on b.ContentID = a.VolumeID left outer join content c on c.BookID = a.VolumeID where date(a.DateCreated) = '2020-09-21';
Returns this:
ReadingList|Radical Uncertainty|And any bar-room conversation, or presidential tweet, will remind you that the degree of confidence with which a proposition is expressed is not the same as the probability that the proposition is true.|Quote of the day|2020-09-21|2020-09-21
Three hours to generate a two sentence blog post probably isn’t a hugely effective use of my time, but I am now wondering what else I can extract from this database…