Open in Goodreads

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

// ==UserScript==
// @name         Open in Goodreads
// @namespace    open-in-goodreads
// @version      1.7
// @description  Adds a button to Amazon book pages to redirect to Goodreads page based on ASIN/ISBN
// @author       SirGryphin
// @match        https://*.amazon.com/*
// @match        https://*.amazon.co.uk/*
// @match        https://*.amazon.com.au/*
// @match        https://*.amazon.com.be/*
// @match        https://*.amazon.com.br/*
// @match        https://*.amazon.ca/*
// @match        https://*.amazon.cn/*
// @match        https://*.amazon.eg/*
// @match        https://*.amazon.fr/*
// @match        https://*.amazon.de/*
// @match        https://*.amazon.in/*
// @match        https://*.amazon.it/*
// @match        https://*.amazon.co.jp/*
// @match        https://*.amazon.com.mx/*
// @match        https://*.amazon.nl/*
// @match        https://*.amazon.pl/*
// @match        https://*.amazon.sa/*
// @match        https://*.amazon.sg/*
// @match        https://*.amazon.es/*
// @match        https://*.amazon.se/*
// @match        https://*.amazon.com.tr/*
// @match        https://*.amazon.ae/*
// @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 imageBlockNew = document.getElementById('imageBlockNew_feature_div');
        var imageBlock = document.getElementById('imageBlock_feature_div');
        var booksImageBlock = document.getElementById('booksImageBlock_feature_div');
        var askWidgetQuestions = document.getElementById('ask-btf_feature_div');

        // Check if either of the div tags is present and ask-btf_feature_div is not present
        if ((imageBlockNew || booksImageBlock || imageBlock) && !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);

            // Insert the button after either of the div tags
            if (imageBlockNew) {
                imageBlockNew.parentNode.insertBefore(centerDiv, imageBlockNew.nextSibling);
            } else if (booksImageBlock) {
                booksImageBlock.parentNode.insertBefore(centerDiv, booksImageBlock.nextSibling);
            } else if (imageBlock) {
                imageBlock.parentNode.insertBefore(centerDiv, imageBlock.nextSibling);
            }
        }
    }

    addButton();
})();