Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lepisma/org-books
Reading list management with org mode
https://github.com/lepisma/org-books
emacs org-mode reading-list
Last synced: 19 days ago
JSON representation
Reading list management with org mode
- Host: GitHub
- URL: https://github.com/lepisma/org-books
- Owner: lepisma
- License: gpl-3.0
- Created: 2017-06-28T04:01:41.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-04-08T19:13:58.000Z (over 3 years ago)
- Last Synced: 2024-04-14T11:54:27.868Z (7 months ago)
- Topics: emacs, org-mode, reading-list
- Language: Emacs Lisp
- Size: 3.49 MB
- Stars: 279
- Watchers: 14
- Forks: 21
- Open Issues: 11
-
Metadata Files:
- Readme: README.org
- License: LICENSE
Awesome Lists containing this project
README
#+TITLE: org-books
#+AUTHOR: Abhinav Tushar[[https://travis-ci.org/lepisma/org-books][https://img.shields.io/travis/lepisma/org-books/master.svg]] [[https://melpa.org/#/org-books][file:https://melpa.org/packages/org-books-badge.svg]] [[https://stable.melpa.org/#/org-books][file:https://stable.melpa.org/packages/org-books-badge.svg]]
Reading list management using org-mode. A sample list lives on my wiki [[https://lepisma.xyz/wiki/readings/reading-list][here]].
[[file:./screen.gif]]
** Quickstart
~org-books~ is available on melpa.#+BEGIN_SRC emacs-lisp
;; Set path to the reading list org file
(setq org-books-file "~/my-list.org");; A basic template file can be generated using the function `org-books-create-file'.
#+END_SRC- To add books manually, use ~org-books-add-book~ function. To add from urls, call
~org-books-add-url~ (or use ~org-books-cliplink~ if url is in clipboard).- To give ratings, go to the entry and call ~org-books-rate-book~.
- While filing a book, ~org-books-file-depth~ tells which headings are to be
considered as a category (like fiction or something).- ~org-books-add-to-top~ (default ~t~) tells whether to add the book at the top or
bottom under the selected heading.** Adding new source
A /source/ for books provide a /details function/ that takes certain input (like a
url in case of amazon) and returns a list of ~title~, ~author~ and ~props~. ~props~ is
an alist which gets added to the entry as org properties. Here is the output
from amazon's:#+BEGIN_SRC emacs-lisp :exports both :results output
(print (org-books-get-details-amazon "https://www.amazon.in/Algebra-Chapter-Graduate-Studies-Mathematics/dp/0821847813/"))
#+END_SRC#+RESULTS:
: ("Algebra: Chapter 0 (Graduate Studies in Mathematics)" "Paolo Aluffi" (("AMAZON" . "https://www.amazon.in/Algebra-Chapter-Graduate-Studies-Mathematics/dp/0821847813/")))With the details function defined, you need to write the url pattern it accepts
and add it to the variable =org-books-url-pattern-dispatches=. Check variable's
docstring for more details.As of now there are the following sources:
- Manual (input: title, author etc.)
- Amazon (input: url)
- Goodreads (input: url)
- Openlibrary (input: url)
- ISBN (input: ISBN, dispatches openlibrary url source)** Using org-capture
For a more flexible setup, you might just want to use ~org-capture~, possibly with
a little help from functions present in this package. Directly using capture
gives you much more flexibility over the structure and organization of entries.
Here we describe a few capture /templates/ that can be used:*** Manual entry
#+BEGIN_SRC emacs-lisp
(setq org-capture-templates
'(("b" "Book" entry (file "some-file.org")
"* %^{TITLE}\n:PROPERTIES:\n:ADDED: %<[%Y-%02m-%02d]>\n:END:%^{AUTHOR}p\n%?" :empty-lines 1)))
#+END_SRC*** Using url from clipboard
#+BEGIN_SRC emacs-lisp
(setq org-capture-templates
'(("b" "Book" entry (file "some-file.org")
"%(let* ((url (substring-no-properties (current-kill 0)))
(details (org-books-get-details url)))
(when details (apply #'org-books-format 1 details)))")))
#+END_SRC** Capturing reading logs
While reading, I keep a timestamped log under the book connected via org capture
template. Here is how it looks like:#+begin_src org
,*** READING Book name
:PROPERTIES:
:AUTHOR: Author
:ADDED: [2020-03-29]
:AMAZON: https://www.amazon.com/...
:END:,**** Log
+ [2021-04-09 Fri 00:32] ...
+ [2021-04-08 Thu 23:59] This book is very ...
#+end_srcOrg capture template looks like the following, using the function
~org-books-visit-book-log~ from this package:#+begin_src emacs-lisp
(setq org-capture-templates
'(("b" "Book log" item (function org-books-visit-book-log)
"- %U %?" :prepend t)))
#+end_src