Amazon Fake Review Analyzer (ReviewMeta)

It returns ReviewMeta.com percentage of potentially fake reviews on amazon and it recalculates the "true" star score excluding "fake" reviews

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        Amazon Fake Review Analyzer (ReviewMeta)
// @description It returns ReviewMeta.com percentage of potentially fake reviews on amazon and it recalculates the "true" star score excluding "fake" reviews
// @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/*
// @version     1.2.1
// @author      SH3LL
// @grant       GM_xmlhttpRequest
// @namespace https://greasyfork.org/users/762057
// ==/UserScript==


function get_stars_number(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 stars_number = doc.querySelector('#adjusted-rating-large');
                  let percent = doc.getElementsByTagName('small');
                  
                  let missing_reviews = doc.getElementsByTagName('center');
              
                  if(stars_number !== null) {
                    stars_number=stars_number.innerText;
                    for(let perc of percent){
                      if(perc.innerText.includes("of potentially unnatural reviews removed")){
                        percent=perc.children[0].children[0].innerText;
                        break;
                      }
                    }
                  }
                  
                  resolve([stars_number,percent]);
           }
        });
    });
}

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/") || window.location.href.includes("/gp/product/") ){
      
      let amz_code; //get amazon product code
      if(window.location.href.includes("/gp/product/") && window.location.href.includes("?") ){
        amz_code=(window.location.href).split("?")[0].split('/gp/product/')[1];
        
      }else if(window.location.href.includes("/gp/product/") && !window.location.href.includes("?")){
        amz_code=(window.location.href).split('/gp/product/')[1];

      }else if(window.location.href.includes("/dp/") && window.location.href.includes("?")){
         amz_code=(window.location.href).split("?")[0].split('/dp/')[1].split('/')[0];
        
      }else if(window.location.href.includes("/dp/") && !window.location.href.includes("?")){ 
         amz_code=(window.location.href).split('/dp/')[1].split('/')[0];
        
      }
      
      let rev_url;
      if(location==="us" /*america (.com)*/ ) {rev_url="https://reviewmeta.com/amazon/";} else {rev_url="https://reviewmeta.com/amazon-"+location+"/";}
      
      
      rev_url=rev_url+amz_code;
      
      
      let stars_number_and_percent = await get_stars_number(rev_url); // get data from ReviewMeta
      
      
      let stars_block = document.getElementsByClassName('a-fixed-left-grid AverageCustomerReviews a-spacing-small');
      
      if(stars_number_and_percent[0]!==null) {// dati trovati nel database
        let message_review = document.createElement('small'); //review info
        let message_percent = document.createElement('small'); //review info
        let review_value = document.createElement('label'); //review info
        let percent_value = document.createElement('label'); //review info
        let link_reviewmeta = document.createElement('a'); //link to ReviewMeta
        
        
        message_review.innerText="ReviewMeta Filtered Reviews "+"["+location.toUpperCase()+"]: ";
        message_review.style.color = 'darkorange';
        review_value.innerText=stars_number_and_percent[0]+"/5";
        review_value.style.color = 'firebrick';
        
        message_percent.innerText="Potentially Fake Reviews ["+location.toUpperCase()+"]: ";
        message_percent.style.color = 'darkorange';
        percent_value.innerText=stars_number_and_percent[1];
        percent_value.style.color = 'firebrick';
        message_percent.append(percent_value);
        
        link_reviewmeta.innerText="[Open this product in ReviewMeta]";
        link_reviewmeta.style.color = 'forestgreen';
        link_reviewmeta.href = rev_url;
        
        let div1 = document.createElement("div");
        let div2 = document.createElement("div");
        let div3 = document.createElement("div");
        
        div1.append(message_review);
        div1.append(review_value);
        div2.append(message_percent);
        div2.append(percent_value);
        div3.append(link_reviewmeta);
        
        stars_block[0].append(div1);
        stars_block[0].append(div2);
        stars_block[0].append(div3);
      }else{ //dati non trovati nel database
        
        let message_review = document.createElement('small'); //review info
        let link_reviewmeta = document.createElement('a'); //link to ReviewMeta
        
        message_review.innerText="Missing product in ReviewMeta DataBase-"+location.toUpperCase()+" or missing reviews for Amazon-"+location.toUpperCase();        
        message_review.style.color = 'firebrick';
        
        link_reviewmeta.innerText="[Add this product to Database]";
        link_reviewmeta.style.color = 'forestgreen';
        link_reviewmeta.href = rev_url;
        
        let div1 = document.createElement("div");
        let div2 = document.createElement("div");
        
        div1.append(message_review);
        div2.append(link_reviewmeta);
                
        stars_block[0].append(div1);
        stars_block[0].append(div2);
        
      }
      
    }
}

main();