Giter Club home page Giter Club logo

org-books's Introduction

org-books

https://img.shields.io/travis/lepisma/org-books/master.svg https://melpa.org/packages/org-books-badge.svg https://stable.melpa.org/packages/org-books-badge.svg

Reading list management using org-mode. A sample list lives on my wiki here.

./screen.gif

Quickstart

org-books is available on melpa.

;; 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'.
  • 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:

(print (org-books-get-details-amazon "https://www.amazon.in/Algebra-Chapter-Graduate-Studies-Mathematics/dp/0821847813/"))
("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

(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)))

Using url from clipboard

(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)))")))

Capturing reading logs

While reading, I keep a timestamped log under the book connected via org capture template. Here is how it looks like:

*** 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 ...

Org capture template looks like the following, using the function org-books-visit-book-log from this package:

(setq org-capture-templates
      '(("b" "Book log" item (function org-books-visit-book-log)
           "- %U %?" :prepend t)))

org-books's People

Contributors

dariuskramer avatar lepisma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

org-books's Issues

`Helm-org' has removed function `helm-org-get-candidates'

First of all, thanks for providing this package, this is what I'm looking for!

One small problem is that we need to install the helm-org version 1.0 from MELPA stable. Seems currently they have removed the function `helm-org-get-candidates' from helm-org package.

Suggestion: Use Calibre to get book metadata

Why not use Calibres' fetch-ebook-metadata to get the books' information. It will simplify adding book because you will only need a title to get information from a book instead of using a URL from Amazon or Goodreads. Also, it will allow you to get a lot more information on the book.

Adding new sources

What is the expected way to add new sources? Right now the existing sources seem to be hard-coded in org-books-get-details? I'd like to add Manning since I read a lot of their books in particular in their early access program whihc isn't yet on Amazon.

Thanks for sharing this nice package by the way!

Add org-capture template to documentation?

Hi! I'm looking into using this right now to manage my reading lists. It would be nice if you had an example capture template, so we can implement it in our normal capture cycle in stead of needing to call a separate function.

Cheers!

Allow descriptive text under sections

At present (probably) adding a new book under a heading just does a single line skip and thus will cause issue when there is description for a section header.

[Feature Request] Manage Goodreads ratings and booklist from interface

It'd be nice if when you manage your books in the booklist, it also updated status, reviews, stars, etc on Goodreads and similar services (well, I'd start with goodreads first though I imagine there are several) as one of the goals for me using this (versus a simple listing) would be managing my reading list all in one place.

(Also, I tend to take lots of notes on books that are non-fiction, having a nice way to fold those or link those in here from org-roam/deft or similar would be awesome.)

Add completion for author

It'll be nice to have the name of authors already present in the file for completion with Helm when adding a new book entry.

helm-completing-read-handlers-alist

I wrote

(use-package org-books
  :ensure t
  :config
  (setq org-books-file "~/books/bücherliste.org"))

and get
Error (use-package): org-books/:catch: Symbol’s value as variable is void: helm-completing-read-handlers-alist

helm is installed.

What is to do to use org-books?

Support foreign amazon domains

I live in Germany, so I use the amazon.de, which is pretty much identical to amazon.com, but just for Germany. It would be nice, if org-books-add-url also worked with amazon.de, amazon.fr, and other foreign amazon domains, if it is not too difficult to adapt the metadata getter.

Multiple Authors

Hi,

First, thank you very much for writing this and for making it available to the public at no cost.

Is there an option to add multiple authors? I could just add them as a comma-separated list, but that is not very clean in terms of helm/vertico suggestions as the comma-separated list is considered as a single author.

Cheers!

[FR] Add function to insert the book at point

I like to organize my books in a lot of different files, not in a single big file. It would be nice if org-books could insert the book at point, or just insert the properties for the link in the current header ala orgmdb-fill-movie-properties.

helm

Hi,

Is helm a hard requirement for this package? I do not use helm.

Cheers!

Add to MELPA

Hi,

This package looks very useful. Would you consider adding it to MELPA?

Adding new properties

Thank you for the package,
What would be the way to add new properties, like, e.g. :PUBLISHER: :LOCATION:

Regards

[Feature Request] Pull highlights from Readwise.io and add to book entry

I'm an prolific reader but would love to get my Kindle highlights from Readwise.io added into the entry for each book (either as a subheading or as a separate page which is then linked) to replicate the functionality I have in Notion (and now, logseq).

In general, I'm looking for ways to better integrate the material I consume, notes I make, and actions I want to take from books (and other media I consume.).

I use this idea right now in Notion, but trying to replicate similar in Emacs (though Notion has a fantastic capture feature for media like web pages and youtube vids.).
https://www.youtube.com/watch?v=lKYBB-Uw1IM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.