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

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==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();