Greasy Fork

亚马逊评论计算(Amazon Review Calculation)

计算每个评分等级的Review数量,以及如果需要提成评分至4.3分需要补充多少个五星好评。

目前为 2023-07-17 提交的版本。查看 最新版本

// ==UserScript==
// @name         亚马逊评论计算(Amazon Review Calculation)
// @namespace
// @version      0.41
// @description  计算每个评分等级的Review数量,以及如果需要提成评分至4.3分需要补充多少个五星好评。
// @author       Monty
// @match        https://www.amazon.com/gp/*
// @match        https://www.amazon.com/*/dp/*
// @match        https://www.amazon.com/dp/*
// @match        https://www.amazon.co.jp/*/dp/*
// @match        https://www.amazon.co.jp/dp/*
// @match        https://www.amazon.de/*/dp/*
// @match        https://www.amazon.de/dp/*
// @match        https://www.amazon.co.uk/*/dp/*
// @match        https://www.amazon.co.uk/dp/*
// @match        https://www.amazon.fr/*/dp/*
// @match        https://www.amazon.fr/dp/*
// @match        https://www.amazon.com.au/*/dp/*
// @match        https://www.amazon.com.au/dp/*
// @match        https://www.amazon.in/*/dp/*
// @match        https://www.amazon.in/dp/*
// @match        https://www.amazon.it/*/dp/*
// @match        https://www.amazon.it/dp/*
// @match        https://www.amazon.es/*/dp/*
// @match        https://www.amazon.es/dp/*
// @match        https://www.amazon.ca/*/dp/*
// @match        https://www.amazon.ca/dp/*
// @match        https://www.amazon.com.mx/*/dp/*
// @match        https://www.amazon.com.mx/dp/*
// @icon
// @grant        none
// @license      MIT
// @namespace 
// ==/UserScript==

function toDecimal(percent) {
    let num = percent.replace('%', '');
    num = num / 100;
    return num;
  }

function jisuanpingfen(numList){
    fens = [5,4,3,2,1]
    let sum =0;
    for (let index = 0; index < fens.length; index++) {
        sum+=fens[index]*numList[index]
    }
    return sum.toFixed(2)
}


function getReviews(){
    let rev_html = document.querySelector('.cr-widget-TitleRatingsAndHistogram')
    console.log('评论内容-----')
    console.log(rev_html)

    let sum_review_counts_ele= document.querySelector('.cr-widget-TitleRatingsAndHistogram .averageStarRatingNumerical')
    let sum_review = sum_review_counts_ele.textContent.trim().split(' ')[0]
    console.log('总评论数:'+sum_review)

    let ariaValueNowList = rev_html.querySelectorAll('.a-declarative tbody .a-meter')

    let bils = []
    ariaValueNowList.forEach(element => {
        const bili = toDecimal(element.ariaValueNow)
        console.log('评论百分比:'+bili)
        bils.push(bili)
    });

    ri_eles = rev_html.querySelectorAll('.a-declarative tbody .a-text-right .a-size-base')


    let counts = []
    for (let index = 0; index < bils.length; index++) {
        const element = ri_eles[index];
        d = document.createElement("span")
        count = parseInt(sum_review)*bils[index]
        counts.push(count)
        console.log('评论数:'+count)
        d.innerHTML = `(`+count.toFixed(0)+`)`//评论数量四舍五入不保留小数位
        console.log('评论数节点:'+d.textContent)
        element.appendChild(d)
    }

    fenshu = jisuanpingfen(bils)
    let prompt_text = ''
    if(fenshu<4.3){
        bu = (sum_review*(4.3-fenshu)/(5-4.3)).toFixed(0)
        prompt_text = ', 还差 '+bu+' 个5星好评才能达到4.3分.'
    }
    // 创建一个自己的结构
    let revv = document.createElement("p")
    revv.classList.add("a-link-normal")
    // 给 example 这个 div 设置类名
    // revv.classList.add("rev")
    revv.innerHTML = `总评论数:`+sum_review+`, 评分:`+fenshu+prompt_text
    sum_review_counts_ele.appendChild(revv)
}



(function() {
    'use strict';
    console.log('亚马逊评论计算(Amazon Review Calculation)')
    getReviews()
})();