🏠 Home 

#东图书豆瓣评分

#东图书详情页及购物车图书类商品显示豆瓣评分


Install this script?
// ==UserScript==
// @name         #东图书豆瓣评分
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description  #东图书详情页及购物车图书类商品显示豆瓣评分
// @author       罗辣耳朵
// @include      http*://cart.jd.com/*
// @include      http*://item.jd.com/*
// @grant        GM_xmlhttpRequest
// @require       http://code.jquery.com/jquery-3.4.1.min.js
// ==/UserScript==
(function() {
'use strict';
var isbnReg = new RegExp('<li title="([-0-9]+)">ISBN:\\1</li>', "gi");
var bookRatedURL = "http://111.229.55.106/isbn/";
var rankInfoCache = {};
// 获取填充的背景颜色
function getBackground(star) {
var background = "#869B74";
if (star >= 9.0){
background = "#EACF02";
}
else if (star >= 8.5) {
background = "#6C890B";
}
else if (star >= 8.0) {
background = "#ABC327";
}
return background;
}
// 获取填充的文字
function getStarText(star, persons) {
return star == "0.0" ? "评价人数不足,暂无评分" : "评分:" + star + "(" + persons + "人评价)";
}
// 设置填充的背景颜色
function setBackground($item, star, persons) {
star = parseInt(star);
persons = parseInt(persons);
if (star >= 7.5 && persons > 999) {
var background = getBackground(star);
$item.css({"background":background});
}
}
// ISBN服务的回调方法
function isbnServiceCallback(data, params) {
var $item = params["item"];
var $backgroundItem = params["backgroundItem"];
var isAppend = params["isAppend"] || false;
var r###lt = data.response;
var persons = parseInt(r###lt.persons);
var rankInfo = {
url: r###lt.url,
star: r###lt.star,
originalPersons: r###lt.persons,
persons: persons
};
addDoubanRankInfo($item, rankInfo, isAppend);
setBackground($backgroundItem, rankInfo.star, rankInfo.persons);
}
// 添加豆瓣评分信息
function addDoubanRankInfo($addedItem, data, isAppend) {
var $star = $("<div class='plus' style='color:#5FD9CD'></div>");
try {
$star.text(getStarText(data.star, data.persons));
isAppend ? $addedItem.append($star) : $addedItem.after($star);
}
catch (e) {
$star.text(data.star + data.persons);
isAppend ? $addedItem.append($star) : $addedItem.after($star);
console.log(e);
}
// 添加直达豆瓣评价链接
var $link = $("<a href='" + data.url + "' style='color:#00B51D; text-decoration:underline' target='_blank'>直达豆瓣</a>");
$star.append($link);
// 添加直达价格趋势链接
var url = isAppend ? window.location.href : "http:" + $addedItem.parent().find(".item-form .goods-item .p-img a").attr("href");
var $priceLink = $("<a href='http://p.zwjhl.com/price.aspx?url=" + encodeURI(url) + "' style='color:#f60; text-decoration:underline; margin-left:10px;' target='_blank'>价格趋势</a>");
$star.append($priceLink);
}
// 调用图书评分服务
function invokeISBNService(href, callback, params) {
GM_xmlhttpRequest({
method: 'GET',
url: href,
responseType: "json",
synchronous: true,
headers: {
'Accept': 'text/html, application/xhtml+xml, */*',
},
onload: (data) => {
if (data.status != 200) {
console.log("isbn service error!");
return;
}
callback(data, params);
},
onerror:function () {
console.log("get book detail html error");
}
});
}
// 购物车处理逻辑
function cart() {
var $items = $(".item-form");
$.each($items, (i, e) => {
var $item = $(e);
var $itemInfo = $item.find(".goods-item .p-name a");
var href = "https:" + $itemInfo.attr("href");
GM_xmlhttpRequest({
method: 'GET',
url: href,
overrideMimeType: "text/xml",
synchronous: true,
headers: {
'User-agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)',
'Accept': 'text/html, application/xhtml+xml, */*',
},
onload: (data) => {
var content = data.responseText;
if (isbnReg.test(content)) {
var isbn = RegExp.$1;
console.log($item);
invokeISBNService(bookRatedURL + isbn, isbnServiceCallback, { "item": $item, "backgroundItem": $item.parent() });
isbnReg.lastIndex = 0;
}
else {
console.log(href + " not found isbn");
}
},
onerror: function () {
console.log("get book detail html error");
}
});
});
}
// 详情页处理逻辑
function detail() {
var parameters = $(".p-parameter ul li");
for (var i = 0; i < parameters.length; i++) {
var $parameter = $(parameters[i]);
if ($parameter.text().startsWith("ISBN")) {
var isbn = $parameter.text();
isbn = isbn.substring("ISBN:".length);
var params = { "item": $(".sku-name"), "backgroundItem": $(".sku-name .plus"), "isAppend": true};
invokeISBNService(bookRatedURL + isbn, isbnServiceCallback, params);
break;
}
}
}
// 加载豆瓣评分
function loadDoubanRank() {
location.hostname.startsWith("cart") ? cart() : detail();
}
loadDoubanRank();
$(".jdcheckbox").on("click", function(e) {
// setTimeout(function () {loadDoubanRank();}, 2000);
});
})();