View Single Post
Old 09-28-2013, 05:34 PM   #598
kiwidude
Calibre Plugins Developer
kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.kiwidude ought to be getting tired of karma fortunes by now.
 
Posts: 4,733
Karma: 2197770
Join Date: Oct 2010
Location: Australia
Device: Kindle Oasis
To all of you who are noticing the review text length issue. This is a limitation of the Goodreads API, which intentionally only returns up to 300 characters of the review text comments.

There is a separate API call which "can" be used to retrieve the full review text for a single book - in fact it is what is used by the "Upload tags to shelves" and "Download tags from shelves" features, which have to deal with calling each book individually.

However the problem is that this is another individual call to Goodreads, and as has been documented countless times on this thread there is a real problem with the T&C of Goodreads around how many calls a plugin like this can make. I have already been through one "warning" phase from them a few months ago (which ultimately came to nothing when they didn't get back to me with any details about which "calls" were causing them issues) but it is not something I want to have to repeat.

So the problem if you think about it is there are a number of you who have hundreds of books on a shelf, that you then want to sync from. Every time you choose to "Sync", I do a number of calls to get the summary list of available books for the selected shelve(s). If I then had to do an additional call for each and every one of the books on the shelf to pull down the full review text not only will the plugin become intolerably slow but undoubtedly we would instantly jump back on the Goodreads radar again.

I don't know quite know what the solution is from the very brief look into it tonight. I haven't read back on this thread recently but I recall someone asking whether it would be possible to somehow identify only books that have "changed" on a shelf. There is a "date updated" field in the xml that the Goodreads API returns for each book for your review. One possibility is to take that date and store it in your calibre library for each book (in some hidden data you don't need to worry about), and then compare that the next time you sync with the shelf. So any books which were linked it could lookup the last sync date for, and compare whether the goodreads record has changed, and that way you are only presented with a list of changed books.

However apart from the fact that there is quite a bit of development work involved to support that, it doesn't solve the problem of every user for the first time doing a sync and it then having to do this extra call I mention above for every book that you have review text that is truncated. Unless I deliberately make it run very, very slowly, which you as users will have to accept is the only way Goodreads are prepared to let people pull data off their servers. A long operation like that will inevitably beg for a some sort of progress dialog, and the work involved in all of this becomes even bigger.

To all the others of you who have posted requests and suggestions (such as sorting etc) - I haven't forgotten about them, I just don't have the time right now to action any of them. This plugin is one of the most complicated I have written and needs a significant chunk of time in order to make any changes to it. Which I don't have for the next few weeks at the very least - when or if that changes I can consider revisiting it.

So I'm not saying this will "never" be fixed, but right now it won't happen in the very short term. Not unless someone else out there wants to step in and supply a patch for it themselves. Sorry but that is just the way it is at the moment - that I have only ever written one review myself on Goodreads (and it is short enough to not be truncated) does not help your cause as I am not impacted by this limitation personally . In fact I don't use the Sync feature at all - I do all my book manipulation from calibre by just using "Add to Shelf" and never worry about trying to bring review data back in...
kiwidude is offline   Reply With Quote