// ==UserScript== // @name eBooks Assistant // @name:zh-CN 豆瓣读书助手 // @namespace https://github.com/caspartse/eBooksAssistant // @version 0.13.0 // @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.13.0"; 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)/gi.exec(doc); if (!errorFlag) { var regexAmazonUrl = /href="(\S+keywords=\d+[^"]+)"[^>]*>Kindle电子书<\/a>/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 = '
Kindle
'; $('.online-type[data-ebassistant="read"]').append(partnerTemplate.replace("{templateUrl}", amazonUrl)); } else if ($('.online-type[data-ebassistant="audio"]').length) { partnerTemplate = '
在线试读:
Kindle
'; $('.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]; console.log(amazonPrice); 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 = /