I practically live in the terminal, and I use very few GUI programs these days, so I'm reluctant to use something like Calibre which I think is too bloated for my purposes. Essentially my requirements are a system that allows for hierarchical categorisation of books, and is easily navigable from the terminal.
The solution I've come up with is to use the filesystem as a "category tree" (so I might have "./Computer Science/Abstract Interpretation/...", or "./Mathematics/Mathematical Logic/...") with softlinks to directories in a hidden "store" which actually contain the books as the leaf nodes; this way I can have the same book in multiple categories, and I find it very easy to find whatever I'm looking for. I've found this works particularly well when combined with a terminal file manager such as ranger, and a fuzzy searcher such as fzf.
I've written a small tool which parses YAML metadata files inside the store and automatically generates the library structure based on the categories I assign.
I'd be interested to hear if anyone else has come up with a solution to this problem, or is aware of a pre-existing solution?
But I recognise that calibre does such a good job that I wouldn't be without it.
These are my calibre libraries:
1.5G amazon_bought
1.9G calibre_library
9.6M calibre_porn
4.0K comics
2.8G computing
4.3G fiction_collection
7.4G julie_books
1.2G pdf_books