// ==UserScript== // @name Amazon CPU Tamer // @name:ja Amazon CPU Tamer // @name:zh-CN Amazon CPU Tamer // @namespace knoa.jp // @contributionURL https://paypal.me/kantankikaku // @description It reduces CPU usage on Amazon shopping pages. Enjoy your snappy shopping. // @description:ja AmazonのショッピングページでのCPU使用率を削減します。お買いものをサクサク楽しみましょう。 // @description:zh-CN 减少Amazon购物页面上的CPU利用率。顺利地享受买东西吧。 // @include https://www.amazon.com/* // @include https://www.amazon.co.jp/* // @include https://www.amazon.* // @exclude */cart/* // @exclude */buy/* // @version 1.2.1 // @grant none // @run-at document-start // @downloadURL none // ==/UserScript== /* [update] 1.2.1 Fix for interaction stability. */ (function(){ const SCRIPTNAME = 'Amazon Cpu Tamer'; console.log(SCRIPTNAME); const TAMEDINTERVAL = 60*1000;/* bunch of intervals does cost so much even if the process does nothing */ const QUICKRESPONSE = 1*1000;/* some interaction needs rather quick response such as video guids */ /* tame quick intervals */ window.originalSetInterval = window.setInterval; window.setInterval = function(f, interval, ...args){ if(interval < TAMEDINTERVAL){ console.log(SCRIPTNAME, 'interval:', interval, 'to', TAMEDINTERVAL); interval = TAMEDINTERVAL; window.setTimeout(f, QUICKRESPONSE, args); } return window.originalSetInterval(f, interval, args); }; /* add an associate tag */ switch(location.host){ case('www.amazon.com'): addTag('knoa-20'); break; case('www.amazon.co.jp'): addTag('knoa-22'); break; } function addTag(tag){ const url = new URL(location.href); if(url.searchParams.get('tag') !== null) return;/* do not overwrite */ console.log(SCRIPTNAME, 'associate tag:', tag); document.documentElement.addEventListener('mousedown', function(e){ for(let target = e.target; target; target = target.parentNode){ if(target.href && target.href.startsWith(location.origin)){ const separator = (target.href.includes('?')) ? '&' : '?'; target.href = target.href + separator + 'tag=' + tag; } } }); const separator = (url.search === '') ? '?' : '&'; history.replaceState(null, document.title, location.href + separator + 'tag=' + tag); } })();