Open in Goodreads

Adds a button to Amazon book pages to redirect to Goodreads page based on ASIN/ISBN

As of 2023-07-13. See the latest version.

// ==UserScript==
// @name         Open in Goodreads
// @namespace    open-in-goodreads
// @version      1.3
// @description  Adds a button to Amazon book pages to redirect to Goodreads page based on ASIN/ISBN
// @author       SirGryphin
// @match        *://*.amazon.*/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    function redirectToGoodreads() {
        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("No ASIN or ISBN Found.");
        } 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 y = window.open('https://www.goodreads.com/book/isbn?isbn=' + asin);
            }
        }
    }

    function addButton() {
        var ebookSample = document.getElementById('imageBlock_feature_div');
        // Adds button on Audible books, goodread just doesn't find audible ASIN.
        //var audibleSample = document.getElementById('audibleimageblock_feature_div');
        //var askWidgetQuestions = document.getElementById('ask-btf_feature_div');
        //if ((ebookSample || audibleSample) && !askWidgetQuestions) {
        // Workaround for only showing button on books instead of all product pages.
        var askWidgetQuestions = document.getElementById('ask-btf_feature_div');
        if (ebookSample && !askWidgetQuestions) {
            var button = document.createElement('button');
            button.innerText = 'Open in Goodreads';
            button.style.marginTop = '10px';
            button.style.marginBottom = '10px';
            button.style.display = 'block';
            button.style.marginLeft = 'auto';
            button.style.marginRight = 'auto';
            button.style.color = '#ffffff';
            button.style.backgroundColor = '#377458';
            button.style.border = 'none';
            button.style.borderRadius = '4px';
            button.style.padding = '8px 12px';
            button.style.fontFamily = 'Arial, sans-serif';
            button.style.fontSize = '14px';
            button.style.fontWeight = 'bold';
            button.style.textDecoration = 'none';
            button.style.cursor = 'pointer';

            button.onclick = redirectToGoodreads;

            var centerDiv = document.createElement('div');
            centerDiv.style.textAlign = 'center';
            centerDiv.appendChild(button);

            ebookSample.parentNode.insertBefore(centerDiv, ebookSample.nextSibling);
        }
    }

    addButton();
})();