How I manage my e-books

I really like e-books. I've hoarded about 500 of them over the years. I've collected them from a variety of sources, in plenty of formats, and I've created what I

6 months ago • 4 min read

Latest Post Hugo: Insert data into content with a shortcode

I really like e-books. I've hoarded about 500 of them over the years. I've collected them from a variety of sources, in plenty of formats, and I've created what I consider to be a quite effective way of managing all of that.

A portion of the books I've read in 2019.

Calibre in the center

Like plenty of other e-book fans out there, Calibre is in the center of my setup. Each time I acquire an e-book, I drag and drop it from my downloads folder into Calibre, and use my pal Apprentice Alf to get rid of the awful DRM if it's present.

Custom columns

In order to utilize Calibre to its fullest, I have defined a couple of custom columns:

Magic part: The web component

An ebook folder on my laptop gets automatically synced to my server using Nextcloud . That server is also running an alternative web interface for Calibre (janeczku/calibre-web ). As a result, moments after I drag and drop a new e-book to Calibre on my laptop, it also becomes available via a web interface.

This web interface gives me a few key features that I wouldn't get otherwise. Most notably:

I can sort my e-books into shelves. This is a crucial feature that is pretty inexplicably missing from within Calibre out of the box, though it can be achieved with a custom tag-like column. I personally find it simpler to maintain shelves from the web interface.

Interface for adding books to shelves.

It has an integrated OPDS feed, allowing me to easily download my e-books to my phone straight from my preferred e-book reading app: Moon+ Reader (note: OPDS support is a premium feature).

My Calibre-Web being displayed as a net library in Moon+ Reader.

I can send my e-books to my e-reader. There's a button to transfer an e-book to my Kindle Paperwhite straight from my browser. If a conversion needs to be made (for example, from EPUB to MOBI), that gets done server-side automatically — no interaction necessary. After the conversion gets completed, the server sends an email with the e-book as an attachment to the email address associated with my e-reader.

Replacing Goodreads

I've used Goodreads for years, even though everything about it is broken . Once I've started to ignore all of the Goodreads' social features that I didn't actively use anyway, I've started to see it for what it really is: a list making app.

Specifically, Goodreads' main feature is allowing you to easily maintain three lists:

  1. Books you're planning on reading
  2. Books you're currently reading
  3. Books you've read

Once I've realized that, I came up with plenty of options on how to better manage those lists. Most of them ended up revolving around Markdown , since that's how I write all of my notes and blog posts. However, when I've discovered Calibre-Web, I went back to managing my lists in a browser tab. I have defined the following shelves:

I add or move things from them from time to time, leave the rating for the book, and finally...

Make the end result public

As a final step in the chain, I have created a script that allow me to publish the list of books I've read on my website. Since Calibre-Web doesn't have an API, I ended up scraping my own server using Python Requests and BeautifulSoup . After about one hundred lines of spaghetti code gets executed, I end up with two files:

The end results can be seen here:

Overall, I'm pretty satisfied with how well this system behaves with little to no maintenance needed (at least for now). The only improvement I could think of is that I want to create another page on my website showcasing my favorite books.

Buy Me a Coffee
Aleksandar Todorović

Published 6 months ago
https://input.sh/how-i-manage-my-ebooks/
input.sh
crawl=CC-MAIN-2020-29
25377
application/http; msgtype=response
sha1:37YUXGYUAXWCMV3ZKPCQHJQTFUFOE5MY
<urn:uuid:f43f088d-7f37-47ea-9b4a-a7cb98420e5f>
2020-07-15T07:42:13Z
144.76.78.66
text/html
sha1:RC6MRNJOG33INJCWGZYMMIHFZGCJMBH2
<urn:uuid:9437ecad-0199-42a5-b2cf-7adf507ed2e7>
https://input.sh/how-i-manage-my-ebooks/
response
<urn:uuid:2fd9064d-8750-44f8-abde-ee3467fccb3e>
isPartOf: CC-MAIN-2020-29
publisher: Common Crawl
description: Wide crawl of the web for July 2020
operator: Common Crawl Admin (info@commoncrawl.org)
hostname: ip-10-67-67-69.ec2.internal
software: Apache Nutch 1.17 (modified, https://github.com/commoncrawl/nutch/)
robots: checked via crawler-commons 1.2-SNAPSHOT (https://github.com/crawler-commons/crawler-commons)
format: WARC File Format 1.1
conformsTo: http://iipc.github.io/warc-specifications/specifications/warc-format/warc-1.1/