Show points on Amazon.co.jp wishlist

Amazon.co.jpの欲しいものリストにポイントを表示

目前為 2018-01-06 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Show points on Amazon.co.jp wishlist
// @namespace    https://gf.qytechs.cn/ja/users/165645-agn5e3
// @version      1.3
// @description  Amazon.co.jpの欲しいものリストにポイントを表示
// @author       agn5e3
// @license      Apache-2.0
// @match        https://www.amazon.co.jp/*/wishlist/*
// ==/UserScript==
(function () {
  'use strict';
  window.addEventListener('load', function () {
    const domParser = new DOMParser();

    let observer = new MutationObserver((records) => {
      for (const record of records) {
        for (const node of record.addedNodes) {
          displayPoint(node);
        }
      }
    });

    let modifyCharacter = ((str) => {
      return str.replace(/[\s]+/g, '').replace( /(/, '(' ).replace( /)/, ')' ).replace( /:/, ':' ).replace( /の割引/, '円' ).replace( /\(/, ' (' );
    });

    let setColor = ((str) => {
      var ratio = str.match(/[0-9]+%/);
      if(ratio === null){
        ratio = 0;
      }else{
        ratio = parseInt(ratio);
      }

      var color;
      if(ratio < 25){
        color = '#111';
      }else if(ratio < 50){
        color = '#f60';
      }else if(ratio < 75){
        color = '#f0f';
      }else{
        color = '#f00';
      }

      return '<p style="margin:0;color:' + color + '">' + str + '</p>';
    });

    let displayPoint = ((node) => {
      if (node.querySelectorAll && node.getElementsByClassName('fetched')[0] === undefined && node.querySelector('div[id^="item_"]') !== null && /Kindle/.test(node.innerText)) {
        node.getElementsByTagName('div')[0].classList.add('fetched');
        const priceSection = node.getElementsByClassName('price-section')[0];
        const asin = JSON.parse(priceSection.attributes["data-item-prime-info"].value).asin;
        console.log(asin);
        fetch('https://www.amazon.co.jp/dp/' + asin).then((response) => response.text()).then((text) => {
          const html = domParser.parseFromString(text, 'text/html');
          const printPrice = html.getElementsByClassName('print-list-price')[0];
          const kindleSave = html.getElementsByClassName('ebooks-price-savings')[0];
          const loyaltyPoint = html.getElementsByClassName('loyalty-points')[0];
          if (printPrice !== undefined) priceSection.insertAdjacentHTML('afterbegin', setColor(modifyCharacter(printPrice.innerText)));
          if (kindleSave !== undefined) priceSection.insertAdjacentHTML('beforeend', setColor('割引:' + modifyCharacter(kindleSave.innerText).replace( /¥/, '' )));
          if (loyaltyPoint !== undefined) priceSection.insertAdjacentHTML('beforeend', setColor(modifyCharacter(loyaltyPoint.innerText)));
          node.getElementsByClassName('a-price-symbol')[0].remove();
          node.getElementsByClassName('a-price-whole')[0].insertAdjacentHTML('afterbegin', '¥');
          node.getElementsByClassName('a-price')[0].classList.add('a-color-price', 'a-size-large');
        }).catch((error) => console.error(error));
      }
    });

    let main = ((node) => {
      for (const node of document.getElementsByClassName('g-item-sortable')) {
        displayPoint(node);
      }

      observer.observe(document.getElementById('g-items'), {
        childList: true,
        subtree: true,
      });
    });

    main();
  });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址