// ==UserScript== // @name Amazon a Dolar Tarjeta // @namespace sharkiller-amazon-dolar-tarjeta // @description Mostrar precios en dolar tarjeta // @version 1.0 // @include http://www.amazon.com/* // @include https://www.amazon.com/* // @include http://amazon.com/* // @include https://amazon.com/* // @include http://www.amazon.co.uk/* // @include https://www.amazon.co.uk/* // @include http://amazon.co.uk/* // @include https://amazon.co.uk/* // @include http://www.amazon.ca/* // @include https://www.amazon.ca/* // @include http://amazon.ca/* // @include https://amazon.ca/* // @require http://code.jquery.com/jquery-latest.js // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @grant GM_addStyle // @downloadURL none // ==/UserScript== (function() { if( typeof jQuery === 'undefined' ){ return false; } GM_addStyle(` .price-ars { color: green; display: inline-block; margin: 0 8px; background: linear-gradient(to bottom,lightblue,white,lightblue); border-radius: 8px; padding: 0 6px; } #sc-buy-box .price-ars { font-size: 12px; display: block; padding: 0; margin: 0; background: none; } div#sc-buy-box { margin-bottom: -14px; } `); String.prototype.endsWith = function (pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; }; var amazonCurrencies = ["USD", "GBP", "CAD"]; var currencyFrom; function regularPriceParser(price, currency) { return parseFloat(price.replace(/,/g, "")); } var currencies = { "USD" : { symbol: "$", priceRegex: /\$\s*([\d,.]+\d)/ }, "GBP" : { symbol: "£", priceRegex: /£\s*([\d,.]+\d)/ }, "CAD" : { symbol: "CDN$", priceRegex: /CDN\$\s*([\d,.]+\d)/ } }; if (document.domain.endsWith("com")) { currencyFrom = "USD"; // amazon.co.uk } else if (document.domain.endsWith("co.uk")) { currencyFrom = "GBP"; // amazon.ca } else if (document.domain.endsWith("ca")) { currencyFrom = "CAD"; } else { return; } var LAST_RUN = "last_run_"; var CURRENCY_RATE = "currency_rate_"; var decimalPlaces = 2; var prefixCurrencySymbol = true; var taxPorcentage = 35; var rounding = Math.pow(10, decimalPlaces); var rate = GM_getValue(CURRENCY_RATE + currencyFrom); var lastRun = GM_getValue(LAST_RUN + currencyFrom, "01/01/0001"); var currencyTo = 'ARS'; var todayDate = new Date(); var todayString = todayDate.getDate() + "/" + todayDate.getMonth() + "/" + todayDate.getFullYear(); var currencyToSymbol = 'ARS $'; function fetchCurrencyData(coin, callback) { GM_xmlhttpRequest({ method: "GET", url: "http://download.finance.yahoo.com/d/quotes.csv?s=" + coin + currencyTo + "=X&f=l1&e=.csv", onload: function(responseDetails) { var rate = responseDetails.responseText.replace(/[\r\n]/g, ""); GM_setValue(CURRENCY_RATE + coin, rate); GM_setValue(LAST_RUN + coin, todayString); callback(); }, onerror: function(responseDetails) { alert("Error fetching currency data for " + coin); } }); } function appendConversion(price, matched) { var originalPrice = regularPriceParser(matched, currencyFrom); if (isNaN(originalPrice)) { return price; } var converted = formatCurrency(originalPrice * (rate * (taxPorcentage / 100 + 1)), rounding, currencyToSymbol, prefixCurrencySymbol); return price + "
" + converted + "
"; } function formatCurrency(num, rounding, symbol, prefix) { sign = (num == (num = Math.abs(num))); num = Math.floor(num * rounding + 0.50000000001); cents = num % rounding; num = Math.floor(num / rounding).toString(); if (cents < 10) { cents = "0" + cents; } for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length-(4*i+3)); } if (prefix) { return (symbol + ((sign)?'':'-') + num + '.' + cents); } else { return (((sign)?'':'-') + num + '.' + cents + symbol); } } function convertCurrency(carrito) { if(carrito && jQuery('.a-size-base.a-text-bold:contains(Order summary)').length == 0){ return false; }else{ if(jQuery('#sc-buy-box.price-ars-cart').length == 0){ jQuery('#sc-buy-box').addClass('price-ars-cart'); }else{ return false; } } console.log('Cambiando precios', carrito); var currency = currencies[currencyFrom]; jQuery('.a-column.a-span3.a-text-right.a-span-last.sc-value').removeClass('a-span3').addClass('a-span4'); jQuery('.a-column.a-span9.sc-text').removeClass('a-span9').addClass('a-span8'); jQuery('a.a-popover-trigger.a-declarative:contains(Estimated)').html('Shipping & handling '); jQuery('span:not(:has(*))').each(function(){ var text = jQuery(this).text(); if( jQuery(this).children().length == 0 && text.indexOf(currency.symbol) != -1 && text.indexOf('ARS') == -1) jQuery(this).html( text.replace(currency.priceRegex, appendConversion) ); }); } jQuery( document ).ready(function(){ if (rate === undefined || todayString !== lastRun) { fetchCurrencyData(currencyFrom, function() { rate = GM_getValue(CURRENCY_RATE + currencyFrom); convertCurrency(); }); } else { console.log('asdasd'); convertCurrency(); } jQuery('.a-fixed-right-grid-col.a-col-right').bind("DOMSubtreeModified",function(e){ convertCurrency(true); }); /*jQuery('#sc-buy-box').after(''); jQuery('#precioCarrito').click(function(){ convertCurrency(true); });*/ }); })();