david-w2
7/19/2017 - 12:01 PM

Keepa EU Graphs

Keepa EU Graphs.

The "Keepa Formatted Version" file is just the same but stripped of comments. It's so I can send it to Pete easily!

/*
 * David Wood dave@drw.me.uk
 * For Amazon.
 * Adds a links to each marketplace above the Keepa graph.
 * Use https://html-cleaner.com/js/ and prepend this to turn it into a bookmarklet; javascript:
 */
javascript: (function() {

  var callback = function() {

    var $doc = jQuery(document);

    $doc.ready(function() {

      var $resultElements = jQuery(".s-result-item");

      // Make links on a results page
      if ($resultElements.length) {

        $resultElements.each(function(index) {

          var $this = jQuery(this);
          var asin = $this.data("asin");
          var linkContainer = jQuery('<div id="other-marketplace-links"></div>');
          $this.find(".sg-col-inner").append(linkContainer);

          renderLink(linkContainer, asin, 0, 3, "de", "DE", "b");
          renderLink(linkContainer, asin, 6, 3, "fr", "FR", "b");
          renderLink(linkContainer, asin, 6, 3, "it", "IT", "b");
          renderLink(linkContainer, asin, 6, 3, "es", "ES", "b");
          renderLink(linkContainer, asin, 6, 3, "com", "USA", "b");
          renderLink(linkContainer, asin, 6, 3, "co.uk", "UK", "b");
        });

      } else { // Make links on a single listing page
      
         // We used to extract the ASIN from the Keep ID. Leaving this in case it's useful again one day.
        var keepaElementIdPrefix = "keepaContainer";
        var keepaElement = jQuery("[id^=" + keepaElementIdPrefix + "]");
   
        var canonicalLink = $doc.find("link[rel='canonical']").attr("href");

		var asin;
        if (canonicalLink) {
        	asin = canonicalLink.substr(canonicalLink.lastIndexOf('/') + 1);
        } else {
        
        	detailPageLink = $doc.find('#olpDetailPageLink').attr("href");
        	asin = detailPageLink.substring(0, detailPageLink.lastIndexOf('/'));
        	asin = asin.substring(asin.lastIndexOf('/') + 1, asin.length);
        }

        var linkContainer = jQuery('<div id="other-marketplace-links"></div>');
        keepaElement.before(linkContainer);

      renderLink(linkContainer, asin, 50, 4, "de", "DE", "h1");
      renderLink(linkContainer, asin, 25, 4, "fr", "FR", "h1");
      renderLink(linkContainer, asin, 25, 4, "it", "IT", "h1");
      renderLink(linkContainer, asin, 25, 4, "es", "ES", "h1");
      renderLink(linkContainer, asin, 25, 4, "com", "USA", "h1");
      renderLink(linkContainer, asin, 25, 4, "co.uk", "UK", "h1");
      }
      
    });
  };

  var renderLink = function(linkContainer, asin, margin, spacing, domain, countryName, markupTagName) {

        linkContainer.append(
            jQuery('<div style="display: inline-block; margin-left:' + margin + 'px">'
                + '<a href="https://www.amazon.' + domain + '/dp/' + asin + '">'
                + '<' + markupTagName+ '>' + countryName + '</' + markupTagName + '></a></div>'
                + '<div style="display: inline-block; margin-left: ' + spacing + 'px">'
                + '<a href="https://www.amazon.' + domain + '/gp/offer-listing/' + asin + '/ref=dp_olp_new_mbc?ie=UTF8&condition=new">'
                + '<span>(Sellers)</span></a></div>'
                ));

  };

  if (window.jQuery === undefined) {

    var injected = document.createElement('script');
    injected.src = "//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js";
    injected.onload = callback;
    document.getElementsByTagName('head')[0].appendChild(injected);
  } else {

    callback();
  }
})();