I propose this slightly updated version of the script, with variables in it. This allows anybody to adapt the script (type of graph, width, height) without changing the code itself.
The optional variables to define in Greasemonkey are:
width: the width of the image in pixel. Default: 400
height: the height of the image in pixel. Default: 250
maxwidth: the width of the image, in percentage of the available space on Amazon page. Default: 60
chart: The type type of graph. Possible other values are "amazon", "new", "used", "new-used", & "amazon-new-used". Default is "amazon-new"
// ==UserScript==
// @name Amazon Camel Graph Revived/Fixed
// @version 1.0.12
// @description Add CamelCamelCamel graph + link to Amazon product pages.
// @namespace null
// @include https://www.amazon.*/*
// @include https://smile.amazon.*/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// ==/UserScript==
var width = GM_getValue("width", 400);
var height = GM_getValue("height", 250);
var maxwidth = GM_getValue("maxwidth", 60);
var chart = GM_getValue("chart", "amazon-new"); //Possible other values are "amazon", "new", "used", "new-used", & "amazon-new-used"
var arr = document.domain.split(".");
var country = arr[arr.length - 1];
if (country=="com") {country = "us";}
var element = $(':input[id="ASIN"]');
var asin = $.trim(element.attr("value"));
if (asin=="") {
element = $(':input[id="ASIN"]');
asin = $.trim(element.attr("value"));
}
var link2 = "<a target='blank' href='https://" + country + ".camelcamelcamel.com/product/" + asin + "'><img src='https://charts.camelcamelcamel.com/" + country + "/" + asin + "/" + chart + ".png?force=1&zero=0&w=" + width + "&h=" + height + "&desired=false&legend=0&ilt=1&tp=all&fo=0' /></a>";
var camelurl = 'https://' + country + '.camelcamelcamel.com/product/' + asin;
GM_xmlhttpRequest({
method: 'GET',
url: camelurl,
onload: function(response) {
var parser = new DOMParser ();
var responseDoc = parser.parseFromString (response.responseText, "text/html");
var chartpost = 0;
/* if (chart=="amazon"||chart=="amazon-new"||chart=="amazon-new-used"||chart=="amazon-used"){
if (!responseDoc.getElementById('price_type_1').disabled) {
$("#averageCustomerReviews_feature_div").append("<div id='camelcamelcamel' style='margin-top: 10px; margin-left: -10px'>" + link2 + "</div>");
chartpost = 1;
}
}
if (chart=="new"||chart=="amazon-new"||chart=="amazon-new-used"||chart=="new-used"){
if (!responseDoc.getElementById('price_type_2').disabled && chartpost==0) {
$("#averageCustomerReviews_feature_div").append("<div id='camelcamelcamel' style='margin-top: 10px; margin-left: -10px'>" + link2 + "</div>");
chartpost = 1;
}
}
if (chart=="used"||chart=="amazon-used"||chart=="amazon-new-used"||chart=="new-used"){
if (!responseDoc.getElementById('price_type_2').disabled && chartpost==0) {
$("#averageCustomerReviews_feature_div").append("<div id='camelcamelcamel' style='margin-top: 10px; margin-left: -10px'>" + link2 + "</div>");
}
} */
/* Block comment above replaced by */
$("#unifiedPrice_feature_div").append("<div id='camelcamelcamel' style='margin-top: 10px; margin-left: -10px; max-width: " + maxwidth +"%'>" + link2 + "</div>");
}
});
function thisCodeProduct () {
var url = unescape(location.href);
var pattern = "https://([a-z]{0,2}).?camelcamelcamel.com/(.*)/product/B([A-Z0-9]{9}).*";
var exp = new RegExp(pattern, "gi");
return url.replace(exp,"$3");
}
var url = unescape(location.href);
var pattern = "https://([a-z]{0,2}).?camelcamelcamel.com/.*";
var exp = new RegExp(pattern, "gi");
var code = url.replace(exp,"$1");
if (code == '')
code = 'com';
else if (code == 'uk')
code = 'co.uk';
$(document).ready(function () {
var links = document.evaluate("//a[contains(@href, 'camelcamelcamel.com')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < links.snapshotLength; i++)
{
var link = links.snapshotItem(i);
if (link.title == 'View the product page at Amazon') {
link.removeAttribute('onclick');
link.href = 'https://www.amazon.'+code+'/dp/B'+thisCodeProduct()+'/';
}
}
});
(function(doc) {
// ASIN.0 in kindle store
var asin = doc.getElementById("ASIN") || doc.getElementsByName("ASIN.0")[0];
if (asin) {
asin = asin.value
history.replaceState(null, "", "/dp/" + asin + "/");
}
})(document);
I propose this slightly updated version of the script, with variables in it. This allows anybody to adapt the script (type of graph, width, height) without changing the code itself.
The optional variables to define in Greasemonkey are: