Create a Live List of Read Books on Goodreads
New here? Learn about Bountify and follow @bountify to get notified of new bounties! x

I want a list of every book I've read on Goodreads, which can be found here: https://www.goodreads.com/api/index#reviews.list

I want the list to be of ALL my read books (so you'll need pagination), and output in HTML, sorted by most recent on top.

Hello Daniel. Would you like to have some particular style/structure in your HTML file? Thanks, Vladimir.
VladimirMikulic 1 month ago
Hello Daniel. Are you planning to make the HTML with the books public or just for your personal use?
kostasx 1 month ago

Crowdsource coding tasks.

2 Solutions


Hello Daniel,

Here is my solution

Currently, and since the GoodReads API does not support CORS requests, I am using a proxy server to make the requests to the API and return the results to the JavaScript running in the HTML page.

The pagination, works for 20 books per page, but you can easily modify the configuration variables and put a smallers or larger value.

The proxy server has been deployed in Heroku (free plan). If you plan of deploying your own proxy server for this script, you can do so by using this deployment script: https://elements.heroku.com/buttons/marcus2vinicius/cors-anywhere

If you intend to run the application on your local computer, I can create a local version of the proxy server to run on your system. That way, you won't need any external server running.

Let me know what you think.

Thank you,

If the Loading message stays from more than a few seconds, is because the Heroku server goes into sleep mode after a long time of inactivity (for the free plan). Just wait a couple of seconds and hit refresh. The server should be up and running, and the results will show up in seconds.
kostasx 1 month ago

Solution

Hello Daniel,

I have programmed the script per your requirements.

You can find your HTML file here.

The complete Python script used for generating this can be found here.

The HTML file's UI looks like this.

Let me know if you need anything more.

Thank you,
Vladimir

I assume that this is your Goodreads profile. I've used this one to generate the HTML file from above. If it's not, then you can substitute the user ID in code (the last line) to match yours. You can see your user ID by looking at the last part of your profile URL. (format: {user-id}-{username}) Thanks.
VladimirMikulic 1 month ago
Can you create the HTML output like so (basically much more simple, with the date I completed it). Uncle Vanya, Anton Chekhov | Read August 21, 2020
danielmiessler 1 month ago
Hello Daniel. I've modified the script per your requirements and updated the links in the solution. Check them out and let me know if I can do anything more. Also, not all books have the date they have been read, as can be seen on your profile. This is a bug in their inner API and server workings and can't be fix by non-goodreads developers. Thank you.
VladimirMikulic 1 month ago
If you remember dates of read books, you can manually set them as described here. It's not a perfect solution, but in my opinion, it's still better than empty date.
VladimirMikulic 1 month ago
This is still showing the old block output, so I don't think you updated the code at that link.
danielmiessler 1 month ago
Hello Daniel. The code has been updated as you requested. If you look at the script lines 50 - 55, you will see the HTML of each entry. It has one parent element and three child elements for storing book title, book author and date the book was read. The HTML file also contains a bit of CSS to make it look more appealing. Let me know if you require any further customization. Thank you!
VladimirMikulic 1 month ago
So you're saying you can tell when I finished the book? Or at least when it was marked as read?
danielmiessler 1 month ago
Hello Daniel. That's correct. If you manually mark the book as read, GoodReads system will register the change and my script will be able to fetch the book's read date. Here is the script. The link is valid for 7 days. Thank you.
VladimirMikulic 30 days ago
View Timeline