Skip to content

Instantly share code, notes, and snippets.

@lightningdb
Last active November 22, 2023 17:36
Show Gist options
  • Save lightningdb/cfee260c3b7af7e65fce to your computer and use it in GitHub Desktop.
Save lightningdb/cfee260c3b7af7e65fce to your computer and use it in GitHub Desktop.
Add to Goodreads from Amazon.com book page bookmarklet
javascript: var asin_elements, asin;asin_elements = document.getElementsByName('ASIN'); if (asin_elements.length == 0) { asin_elements = document.getElementsByName('ASIN.0'); };if (asin_elements.length == 0) { alert('Sorry, this doesn\'t appear to be an Amazon book page.'); }else { asin = asin_elements[0].value; if (asin.match(/\D/) === null) { var x = window.open('http://www.goodreads.com/review/isbn/'+ asin, 'add_review'); } else { var x = window.open('https://www.goodreads.com/search?q='+ asin); } x.focus();}
@lightningdb
Copy link
Author

This is more robust than the original bookmarklet I found on the Goodreads site (which I've been using with mixed success for years.)

It doesn't use a URL passing regex, but rather hidden ASIN elements on the page, and is thus much more robust.

This also works with Amazon UK and German Amazon.

@lightningdb
Copy link
Author

To add this to your browser:

  • click on the "Raw" button above.
  • copy the text
  • add a bookmark to your browser, and for the location, paste the text that you copied in the previous step
  • name the bookmark

Now it is installed, click the bookmark anytime you want to add an Amazon book to your Goodreads queue (note: it doesn't actually do the adding, it takes you the page where you can click "Want To Read".)

@lightningdb
Copy link
Author

I've updated this today to workaround a limitation in Goodreads. Recently (AFAICT), the bookmarklet stopped working for products that had an ASIN (an Amazon identifier) instead of an ISBN, because of the way Goodreads URL structure worked. So, the old bookmarklet would work for products with an ISBN, but not for products with an ASIN (Amazon Standard Identification Number), which in my limited research seems to be Kindle books.

The fix I've implemented follows the following logic:

  • if the ASIN field in the page (in the HTML it is called ASIN whether it is an ASIN or ISBN) is all digits, it is an ISBN and should go direct to the book page
  • otherwise if there are letters in the value, it must be an ASIN, and as far as I can tell, the best that we can do on Goodreads is to direct the user to the search page (with the search field filled with the ASIN) as Randy suggested.

Install the bookmark as instructed in previous comments.

@JBaby9783
Copy link

Thank you very much!!!!

@csababorzasi
Copy link

Thank you very much, I much appreciate it for making this public!

Yet, would you be able to make a similar one for LibraryThing as well (https://www.librarything.com/)? I want to add my kindle library title to LibraryThing, tried changing the search address but it doesn't work this way.

@lightningdb
Copy link
Author

@csababorzasi Thanks. I don't currently have time to create one for LibraryThing, as I don't use it so would have to get familiar with it, but I imagine it would have a similar method for finding books, so it should be relatively easy to modify the script. Let me know how you go.

@csababorzasi
Copy link

Hi @lightningdb, finally I was able to do it and it works fine, see code below. I just changed the links, that's it. First I used the links reverse that's why I didn't get it. Thanks again for making the code available, it's a great help!

javascript: var asin_elements, asin;
asin_elements = document.getElementsByName('ASIN');
if (asin_elements.length == 0) {
asin_elements = document.getElementsByName('ASIN.0');
};
if (asin_elements.length == 0) {
alert('Sorry, this doesn't appear to be an Amazon book page.');
} else {
asin = asin_elements[0].value;
if (asin.match(/\D/) === null) {
var x = window.open('https://www.librarything.com/addbooks' + asin, 'add_review');
} else {
var x = window.open('https://www.librarything.com/addbooks?search=' + asin);
}
x.focus();
}

@lightningdb
Copy link
Author

Terrific! Glad you were able to make something work :)

@SirGryphin
Copy link

This wasn't working for me with Kindle books kept loading goodreads and saying Page Unavailable An unexpected error occurred. We will investigate this problem as soon as possible — please check back soon! So I changed the following URLs and seems to be working now. Tested on Kindle, Paperback and Hardback and goodreads loads each time.

Changed:

var x = window.open('https://www.goodreads.com/search?q='+ asin);

To:

var x = window.open('https://www.goodreads.com/book/isbn?isbn='+ asin);

Working Bookmarklet:

javascript: var asin_elements, asin;asin_elements = document.getElementsByName('ASIN'); if (asin_elements.length == 0) { asin_elements = document.getElementsByName('ASIN.0'); };if (asin_elements.length == 0) { alert('Sorry, this doesn\'t appear to be an Amazon book page.'); }else {  asin = asin_elements[0].value;  if (asin.match(/\D/) === null) { var x = window.open('http://www.goodreads.com/review/isbn/'+ asin, 'add_review'); } else { var x = window.open('https://www.goodreads.com/book/isbn?isbn='+ asin); } x.focus();}

@lightningdb
Copy link
Author

Awesome, thanks @SirGryphin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment