Quote:
Originally Posted by nickdma
Glad to see some progress on this. I saw your post on GoodReads, I hope they response favorably.
|
I'm sure you saw their response, which for anyone reading this was that they have some degree of "leniency" before they warn about an application abusing their API. I've tried to explain that this particular usage (synchronising with a user's GoodReads shelves) will hopefully encourage users to the GoodReads site.
Quote:
Just a note on shelves. The 3 default shelves are "exclusive", which means a book can only be on one at any given time. Adding a book to "read" takes it off "to-read/currently-reading" for you.
|
Nice to know. In fact I can't find an API function to remove a book from a shelf so that will be one less menu option in the plugin

. As you say you will just add the book to a "different" shelf in Goodreads if you put it on the wrong one. I was already intending a "View shelf" menu option which will take you direct to the shelf contents on Goodreads so you could delete it completely from there if you messed up.
Quote:
I actually did some playing around with the GoodReads api this weekend. I put together a perl script (cause that's what I'm comfortable with) to fetch a user's shelf content, and update a custom column in calibre. I created a "tag" column in calibre with a value for each person in the family. I now run my script daily to fetch their "read" and "to-read" lists, compare those with the calibre db, and update the "read" custom column adding their name if they've read the book.
This lets me maintain a single library (it gets rsynced to their computers) with read tracking.
|
Interesting ideas, and touches on one of the thoughts I had of the synchronisation possibly being two ways. i.e. the ability to somehow update books in Calibre to indicate something about the shelf they are on in Goodreads.
One "problem" I see is coming up with a list of options as to how people would want to flag those books in Calibre. Some people would use a tag, others would use a custom column like you have, there may be other ways I haven't thought of. It's almost like you want a mini rules engine for each shelf in terms of if book on this shelf, add "xxx" tag to book in Calibre, if book on this shelf, put "yyy" in the "zzz" custom column etc.
Also you have in passing mentioned another issue I hadn't considered at all - multiple Goodreads user accounts with a single Calibre usage. So if a Calibre user of this plugin has multiple accounts, choosing the Goodreads account must be part of the action. And as each user could need different "actions" if we are synchronising data to Calibre (e.g. different values in a custom column) there needs to be per account customisation of those.
Quote:
The final missing piece is an easy way to put a calibre book on a GoodReads shelf.
I had a bugger of a time dealing with comparing books between calibre and goodreads. Variations in title and author spelling, etc. ISBN helps, but not everyone placed the book on their shelf using the same ISBN.
|
Yeah that was always going to be an issue and not an easy one to solve - even if we had a Goodreads metadata download plugin which isn't likely. I'm going to keep the plugin simple (initially at least) and focus only on ISBN. If there is a mismatch, I will find a way to give as much information to the user as possible about it and leave it to them to resolve the issue (such as updating the ISBN in Calibre then trying again).
There could be issues when adding books to shelves too - such as books that have no ISBN, or the ISBN is not known by Goodreads (dunno how likely that is given they seem fairly confident of their database sources but it could happen I guess). Again all I can think of at the moment is to present a dialog after the add summarising the information on the books that could not be added and let the user resolve it. They have the "Search the Internet" plugin to let them find the book easily on the Goodreads site, they can then paste that into the Calibre data and then add to shelf again.
Quote:
This has been a big help. Now when I go to look for content to send to my reader, I can use a saved query to restrict calibre to all the books I haven't read, and then poke around by series/author etc. I can easily see which of those books someone else has read as well. I like to try to read things the kids are reading.
|
Very cool, love the idea of "reading with the family" and integrating that into how you synchronise with Calibre.