// ==UserScript== // @name Amazon Global Price Comparator // @description It shows global prices in amazon item page // @match https://www.amazon.it/* // @match https://www.amazon.de/* // @match https://www.amazon.co.uk/* // @match https://www.amazon.fr/* // @match https://www.amazon.es/* // @match https://www.amazon.com/* // @grant none // @version 1.2 // @author SH3LL // @grant GM_xmlhttpRequest // @namespace https://greasyfork.org/users/762057 // @downloadURL none // ==/UserScript== function get_price(url) { return new Promise(function (resolve, reject) { GM_xmlhttpRequest({ method: 'GET', responseType: 'document', synchronous: false, url: url, onload: (resp) => { const doc = document.implementation.createHTMLDocument().documentElement; doc.innerHTML = resp.responseText; let price_block = doc.querySelector('#priceblock_ourprice'); // id prezzo normale if(price_block ===null) price_block = doc.querySelector('#priceblock_saleprice') // id prezzo scontato if(price_block ===null) price_block = doc.querySelector('#priceblock_dealprice') // id prezzo offerta flash if(price_block !== null) { price_block=price_block.innerText; resolve(price_block); } resolve("error"); } }); }); } async function main(){ let location="it"; if(window.location.href.includes(".it")){location="it";} if(window.location.href.includes(".de")){location="de";} if(window.location.href.includes(".fr")){location="fr";} if(window.location.href.includes(".es")){location="es";} if(window.location.href.includes(".co.uk")){location="uk";} if(window.location.href.includes(".com")){location="us";} if(window.location.href.includes("/dp/")){ let amz_code; //get amazon product code if(window.location.href.includes("?")){ amz_code=(window.location.href).split("?")[0].split('/dp/')[1].split('/')[0]; }else{ amz_code=(window.location.href).split('/dp/')[1].split('/')[0]; } let price_block = document.querySelector('#price'); //HOOK if(price_block===null) price_block = document.querySelector('#productOverview_feature_div').children[0]; let tr1 = document.createElement("tr"); let div1 = document.createElement("div"); div1.style.position = "relative"; div1.style.left="100%"; let message1= document.createElement("label"); message1.innerText="Loading Prices..."; message1.style.color="firebrick"; tr1.append(div1); div1.append(message1); price_block.children[0].children[0].append(tr1); let locations = ["it","de","fr","es","co.uk","com"]; let prices=[],link,min_price=999999999999999999999999999; for(let curr_location of locations){ let curr_price = await get_price("https://www.amazon."+curr_location+"/dp/"+amz_code); if(curr_price!=="error"){ //get min price let cleaned_price=curr_price.replace(",","."); cleaned_price=cleaned_price.replace("$",""); cleaned_price=cleaned_price.replace("£",""); cleaned_price=cleaned_price.replace("€",""); cleaned_price=cleaned_price.trim();//remove spaces if(parseFloat(cleaned_price)