Skip to content

Reading list management with org mode

License

Notifications You must be signed in to change notification settings

walliv/org-books

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

org-books

Reading list management using org-mode. Original author: @lepisma (Abhinav Tushar): https://github.com/lepisma/org-books.

This is my fork with some additional functionality I wanted for myself. All credit for the package goes to @lepisma. See the original version for a tutorial.

Differences from the original version

  • More details from Goodreads.
    • New: automate genre tagging by customizing the org-books-genre-tag-associations variable! (More info below.)
  • Support for OpenLibrary and LibraryThing.
    • Can add whole series from Goodreads and LibraryThing (just use the series URL)!
    • When scraping from LibraryThing, optionally fetch additional data from Amazon automatically (see the org-books-librarything-get-amazon-details variable). Try with a series link for extra oomph!
  • Automated property and state assignment with in-built functions.
  • Re-read tracking.
  • Jump to reading: quickly find books that you are reading right now.
  • New reading state: DNF! For books you cannot even. (Supports re-read functionality!)
  • Quality of life improvements:
    • If org-books-add-url fails, it will ask to retry.
    • Helm call for location of new book has been simplified, and should run faster.

Goodreads details

The function org-books-get-details-goodreads now fetches not just the author and book name, but also the publication year, page count, and Goodreads rating. Some books have the publication year for a newer edition, and the original publication year in parentheses: in these cases the function fetches the original publication year. The function also adds a timestamp of the date the book was added to the collection.

Automatic genre tagging

The variable org-books-genre-tag-associations is a hash table that lets you customize which genre tags (Goodreads only so far) are assigned upon adding a book to your org-books file.

Say you read a lot of urban fantasy, and you’d like to have tags on all your urban fantasy books, but you don’t want to assign them every time by hand. This is where automatic genre tagging comes in handy: if a book is tagged as “Urban Fantasy” on Goodreads, org-books will automatically assign it a tag of your choice.

You can enable this functionality by adding something like this to your config:

(map-put! org-books-genre-tag-associations "Urban Fantasy" "urban")

where the key is the exact genre tag as it appears on Goodreads, and the value is what you want it to be tagged as in org-books.

Multiple keys can be assigned to the same value. Deduplication of tags is handled automatically during assignment.

State tracking and re-reads

I rehauled the org-books-rate-book function and added a counterpart for beginning a book: org-books-start-reading. These function now do two things:

  • set the TODO state (‘READING’ or ‘READ’),
  • add a timestamp to the book’s properties.

Moreover, the functions support re-reads. On every new read, the new starting date, completion date, and rating are all recorded separately.

Core functions for everyday use

Consider giving keybindings to the following functions:

  • org-books-add-url: to add new books to the collection.
    • Alternatively org-books-cliplink to add a link from the clipboard.
  • org-books-start-reading: when beginning to read a new book (to change its state to READING and timestamp the starting date).
  • org-books-rate-book: when you finish a book (to give it a rating from 1 to 5, change its state to READ, and timestamp the finished date).
    • org-books-dnf: if for whatever reason you cannot keep reading, abandon ship and mark the book as unfinished.
  • org-books-jump-to-reading: quickly find a book with a READING status. You can use this anywhere, not just in the org-books file.

About

Reading list management with org mode

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Emacs Lisp 100.0%