Greasy Fork

Amazonの商品画面にサクラチェッカー用リンクを作成

Amazonの商品画面(の購入ボタンの下あたり)にサクラチェッカー用リンクを作成し、サクラチェッカーサイト上のアソシエイトIDを書き換える

当前为 2019-09-13 提交的版本,查看 最新版本

// ==UserScript==
// @name         Amazonの商品画面にサクラチェッカー用リンクを作成
// @namespace    unkomoreta
// @version      0.4
// @description  Amazonの商品画面(の購入ボタンの下あたり)にサクラチェッカー用リンクを作成し、サクラチェッカーサイト上のアソシエイトIDを書き換える
// @author       nikukoppun
// @match        https://www.amazon.co.jp/*
// @match        https://sakura-checker.jp/*
// @require      https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    if (-1 < location.href.indexOf("amazon.co.jp")) {
        jQuery.noConflict();
        (function($) {
            if (0 < $("#dp").length) {
                setCheckerButton();
                let observer = new MutationObserver(function (MutationRecords, MutationObserver) {
                    setCheckerButton();
                });
                observer.observe($("#desktop_buybox").get(0), {
                    childList: true
                });
                function setCheckerButton() {
                    let asin = "";
                    if (0 < $("#ASIN").length) {
                        asin = $("#ASIN").val();
                    }
                    let styleHtml = `
                        <style>
                            .sakurachecker a {
                                display: inline-block;
                                border: 1px solid gray;
                                padding: 0.5rem;
                                margin-bottom: 2ex;
                                width: 100%;
                                text-align: center;
                                color: black;
                                border-radius: 3px;
                                background: linear-gradient(gold 0%, orange 100%);
                            }
                            .sakurachecker a:hover {
                                text-decoration: none;
                                background: linear-gradient(orange 0%, chocolate 100%);
                            }
                        </style>`;
                    let buttonHtml = "";
                    if (asin != "") {
                        let targetURL = "https://sakura-checker.jp/search/" + asin + "/";
                        buttonHtml = `
                            <div class='sakurachecker'>
                                <a href='${targetURL}' target='_blank'>サクラチェッカーで確認</a>
                            </div>`
                    } else {
                        buttonHtml = `
                            <div class='sakurachecker'>
                                <a href='#' onclick='return false;'>ASIN見つからず</a>
                            </div>`;
                    }
                    if (0 < $("#rcx-subscribe-submit-button-announce").length) {
                        $("#rcx-subscribe-submit-button-announce").closest("div.a-section").after(styleHtml + buttonHtml);
                    } else if (0 < $("#buyNow").length) {
                        $("#buyNow").closest("#buyNow_feature_div").after(styleHtml + buttonHtml);
                    } else if (0 < $("#add-to-cart-button").length) {
                        $("#add-to-cart-button").closest("div.a-button-stack").after(styleHtml + buttonHtml);
                    } else if (0 < $("#outOfStock").length) {
                        $("#outOfStock .a-box-inner:first").prepend(styleHtml + buttonHtml);
                    }
                }
            }
        })(jQuery);
    } else {
        // かきかえてね
        let associateId = "nikukoppun-22";
        replaceURLAll();
        let observer = new MutationObserver(function (MutationRecords, MutationObserver) {
            replaceURLAjax();
        });
        observer.observe($(".section.selectBlock").get(0), {
            childList: true,
            subtree: true,
        });
        function replaceURLAll() {
            $("a").each(function(){
                replaceURL($(this), "href");
            });
            $("iframe").each(function(){
                replaceURL($(this), "src");
            });
        }
        function replaceURLAjax() {
            $(".section.selectBlock a").each(function(){
                replaceURL($(this), "href");
            });
            $(".section.selectBlock iframe").each(function(){
                replaceURL($(this), "src");
            });
        }
        function replaceURL($target, attrName) {
            let url = $target.attr(attrName);
            if (typeof url === "string" && url.match(/(\/|.+\.)amazon(\.co\.|\.)jp\//)) {
                if (!$(location).attr("href").match(/\/astore\.amazon\./) && url.match(/\/astore\.amazon\./)) {
                    return true;
                };
                if (url.match(/[\w-]*-22/)) {
                    url = decodeURIComponent(url);
                    $target.attr(attrName, url.replace(/[\w-]*-22/, associateId));
                }
            }
        }
    }
})();