// ==UserScript==
// @name eBooks Assistant
// @name:zh-CN 豆瓣读书助手
// @namespace https://github.com/caspartse/eBooksAssistant
// @version 0.11.1
// @description eBooks Assistant for douban.com
// @description:zh-CN 为豆瓣读书页面添加亚马逊Kindle、微信读书、多看阅读、喜马拉雅等链接
// @author Caspar Tse
// @license MIT License
// @supportURL https://github.com/caspartse/eBooksAssistant
// @match https://book.douban.com/subject/*
// @require https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js
// @connect amazon.cn
// @connect duokan.com
// @connect 8.210.234.3
// @grant GM_xmlhttpRequest
// @downloadURL none
// ==/UserScript==
(function() {
var version = "0.11.1";
var domain = "http://8.210.234.3:8081";
function changeMargin() {
if ($('[data-ebassistant="read"]').height() > 36) {
$('[data-ebassistant="read"]').attr("style", "margin-right:0;");
}
}
function queryAmazon1(isbn, title, token="") {
GM_xmlhttpRequest({
method: "GET",
url: "https://www.amazon.cn/s?__mk_zh_CN=亚马逊网站&i=digital-text&k=" + isbn + "&ref=nb_sb_noss&url=search-alias%3Ddigital-text",
headers: {
"User-agent": window.navigator.userAgent,
},
onload: function(responseDetail) {
var doc = responseDetail.responseText;
var errorFlag = /("totalResultCount"\:0)|(在Kindle商店中未找到)|(Kindle商店中没有)/gi.exec(doc);
if (!errorFlag) {
var regexAmazonUrl = /href="(\S+keywords=\d+[^"]+)"/gi;
var amazonUrl = "https://www.amazon.cn" + regexAmazonUrl.exec(doc)[1];
amazonUrl = amazonUrl.replace(isbn, title);
var partnerTemplate = "";
if ($('.online-type[data-ebassistant="read"]').length) {
partnerTemplate = '
';
$('.online-type[data-ebassistant="read"]').append(partnerTemplate.replace("{templateUrl}", amazonUrl));
} else if ($('.online-type[data-ebassistant="audio"]').length) {
partnerTemplate = '';
$('.online-type[data-ebassistant="audio"]').before(partnerTemplate.replace("{templateUrl}", amazonUrl));
} else {
partnerTemplate = '';
$("#link-report").after(partnerTemplate.replace("{templateUrl}", amazonUrl));
}
var regexAmazonPrice = /¥([0-9\.]+)<\/span>/gi;
var amazonPrice = regexAmazonPrice.exec(doc)[1];
var amazonKu = false;
var buyItemTemplate = ' ';
if (amazonPrice == 0.00 ) {
buyItemTemplate = ' KU可免费借阅
';
regexAmazonPrice = /或者¥([0-9\.]+)购买<\/span>/gi;
amazonPrice = regexAmazonPrice.exec(doc)[1];
amazonKu = true;
}
buyItemTemplate = buyItemTemplate.replaceAll("{templateUrl}", amazonUrl);
buyItemTemplate = buyItemTemplate.replace("{templatePrice}", amazonPrice);
$("#buyinfo ul:nth-child(2)").prepend(buyItemTemplate);
var amazonShortUrl = /(https:\/\/www\.amazon\.cn\/dp\/[0-9a-zA-Z]+\/)/gi.exec(amazonUrl)[1];
GM_xmlhttpRequest({
method: "POST",
url: domain + "/amazon/update",
data: "isbn=" + isbn + "&price=" + amazonPrice + "&url=" + amazonShortUrl + "&ku=" + amazonKu + "&token=" + token + "&version=" + version,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
});
}
return;
}
});
changeMargin();
return;
}
function queryAmazon2(isbn, title, subtitle, author, translator, publisher) {
GM_xmlhttpRequest({
method: "GET",
url: domain + "/amazon?isbn=" + isbn + "&title=" + title + "&subtitle=" + subtitle + "&author=" + author + "&translator=" + translator + "&publisher=" + publisher + "&version=" + version,
headers: {
"User-agent": window.navigator.userAgent,
},
onload: function(responseDetail) {
var result = JSON.parse(responseDetail.responseText);
console.log(result);
var token = result.token;
if (result.errmsg == "") {
var amazonUrl = result.data.url;
var amazonPrice = result.data.price;
var ku = result.data.ku;
var partnerTemplate = "";
if ($('.online-type[data-ebassistant="read"]').length) {
partnerTemplate = '';
$('.online-type[data-ebassistant="read"]').append(partnerTemplate.replace("{templateUrl}", amazonUrl));
} else if ($('.online-type[data-ebassistant="audio"]').length) {
partnerTemplate = '';
$('.online-type[data-ebassistant="audio"]').before(partnerTemplate.replace("{templateUrl}", amazonUrl));
} else {
partnerTemplate = '';
$("#link-report").after(partnerTemplate.replace("{templateUrl}", amazonUrl));
}
var buyItemTemplate = ' ';
if (ku === true) {
buyItemTemplate = ' KU可免费借阅
';
}
buyItemTemplate = buyItemTemplate.replaceAll("{templateUrl}", amazonUrl);
buyItemTemplate = buyItemTemplate.replace("{templatePrice}", amazonPrice);
$("#buyinfo ul:nth-child(2)").prepend(buyItemTemplate);
} else {
console.log("call queryAmazon1.");
queryAmazon1(isbn, title, token);
}
return;
}
});
changeMargin();
return;
}
function queryXimalaya(isbn, title, subtitle, author, translator, publisher) {
GM_xmlhttpRequest({
method: "GET",
url: domain + "/ximalaya?isbn=" + isbn + "&title=" + title + "&subtitle=" + subtitle + "&author=" + author + "&translator=" + translator + "&publisher=" + publisher + "&version=" + version,
headers: {
"User-agent": window.navigator.userAgent,
},
onload: function(responseDetail) {
var result = JSON.parse(responseDetail.responseText);
console.log(result);
if (result.errmsg == "") {
var ximalayaUrl = result.data.url;
var partnerTemplate = "";
if ($(".online-partner .online-type").length == 2) {
partnerTemplate = '';
$('.online-type[data-ebassistant="audio"]').append(partnerTemplate.replace("{templateUrl}", ximalayaUrl));
} else if ($(".online-partner .online-type").length == 1) {
partnerTemplate = '';
$('.online-type[data-ebassistant="read"]').after(partnerTemplate.replace("{templateUrl}", ximalayaUrl));
} else {
partnerTemplate = '';
$("#link-report").after(partnerTemplate.replace("{templateUrl}", ximalayaUrl));
}
}
return;
}
});
changeMargin();
return;
}
function queryDuokan1(isbn, token="") {
GM_xmlhttpRequest({
method: "GET",
url: "http://www.duokan.com/search/" + isbn + "/1",
headers: {
"User-agent": window.navigator.userAgent,
},
onload: function(responseDetail) {
var doc = responseDetail.responseText;
var errorFlag = /