I wrote last week about tweaking a Kobo e-reader's sqlite database by hand.
But who wants to remember all the table names and type out those queries? I sure don't. So I wrote a Python wrapper that makes it much easier to interact with the Kobo databases.
Happily, Python already has a module called sqlite3. So all I had to do was come up with an API that included the calls I typically wanted -- list all the books, list all the shelves, figure out which books are on which shelves, and so forth.
The result was kobo_utils.py, which includes a main function that can list books, shelves, or shelf contents.
You can initialize kobo_utils like this:
import kobo_utils koboDB = KoboDB("/path/where/your/kobo/is/mounted") koboDB.connect("/path/to/KoboReader.sqlite")
connect()throws an exception if it can't find the .sqlite file.
Then you can list books thusly:
koboDB.list_books()or list shelf names:
print_shelfwhich books are on which shelves:
shelves = koboDB.get_dlist("Shelf", selectors=[ "Name" ]) for shelf in shelves: print shelf["Name"]
What I really wanted, though, was a way to organize my library, taking the tags in each of my epub books and assigning them to an appropriate shelf on the Kobo, creating new shelves as needed. Using kobo_utils.py plus the Python epub library I'd already written, that ended up being quite straightforward: shelves_by_tag.
[ 20:38 Sep 15, 2015 More tech | permalink to this entry | ]