John’s
Comments
(group member since Mar 03, 2014)
John’s
comments
from the Goodreads Developers group.
Showing 1-6 of 6

The closest thing I can find is popular_shelves in book/show, but that's not just a list of genres so I'd have to somehow filter the non-genre lists out...

<id type="integer">13019146</id>
<isbn nil="true"/>
<isbn13 nil="true"/>
<text_reviews_count type="integer">1</text_reviews_count>
<title>Velvet Dogma</title>
<image_url>https://d202m5krfqbpi5.cloudfront.net...
<small_image_url>https://d202m5krfqbpi5.cloudfront.net...
<link>https://www.goodreads.com/book/show/1...
<num_pages/>
<format/>
<edition_information/>
<publisher/>
<publication_day/>
<publication_year/>
<publication_month/>
<average_rating>3.15</average_rating>
<ratings_count>85</ratings_count>
<description/>
<authors>
<author>
<id>992207</id>
<name>Weston Ochse</name>
<image_url>
<
I'd like to get more information about each book using Amazon's API, but in order to do that I need the ASIN for each book.
The XML I get from review/list has an internal ID and an ISBN but eBooks don't seem to have ISBNs.
Do I need to call book/show for each book in order to get the ASIN? Is there any way I can batch together requests so I can get the ASINs for all the books at once instead of sending requests one per second?


I wouldn't think it would have a lot of traffic (especially in the beginning) but the only way to be sure that I'm not exceeding one request per second is to write code to wait between requests. I just wanted to check if I needed to add the complication to rate limiting to the oauth flow or not.
If I don't need to insert sleeps into oauth then this would be the flow for a new user:
* I get a response token using my API key and create an authorize URL.
* The user goes to the authorize URL, logs in and gets redirected to my callback URL.
* I get the verifier from the callback URL and use it to get an access token.
* I call auth_user to get the user ID (and wait a second).
* I call review/list to get a list of the user's read books (and wait a second).
* If the attributes on the reviews tag indicates that there are more results then I call review/list again (and wait a second). Repeat as necessary.
* I generate some recommendations based on the user's read books and show them to the user.
