// ==UserScript== // @name eBooks Assistant // @name:zh-CN 豆瓣读书助手 // @namespace https://github.com/caspartse/eBooksAssistant // @version 0.8.2 // @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/1.10.0/jquery.min.js // @connect amazon.cn // @connect 106.52.138.60 // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== (function() { var version = '0.8.0'; function queryAmazon1(isbn, title) { 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商店中没有)/.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 = '
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]; console.log(amazonPrice); var buyItemTemplate = '
  • '; if (amazonPrice == 0.00 ) { buyItemTemplate = '
  • KU可免费借阅
  • '; regexAmazonPrice = /或者¥([0-9\.]+)购买<\/span>/gi; amazonPrice = regexAmazonPrice.exec(doc)[1]; } buyItemTemplate = buyItemTemplate.replaceAll("{templateUrl}", amazonUrl); buyItemTemplate = buyItemTemplate.replace("{templatePrice}", amazonPrice); $("#buyinfo ul:nth-child(2)").prepend(buyItemTemplate); } return; } }); return; } function queryAmazon2(isbn, title) { GM_xmlhttpRequest({ method: "GET", url: "http://106.52.138.60:8081/amazon?isbn=" + isbn + "&title=" + title + '&version=' + version, headers: { 'User-agent': window.navigator.userAgent, }, onload: function(responseDetail) { var result = JSON.parse(responseDetail.responseText); console.log(result); 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); } return; } }); return; } function queryTuring(isbn) { GM_xmlhttpRequest({ method: "GET", url: "http://106.52.138.60:8081/turing?isbn=" + isbn + '&version=' + version, headers: { 'User-agent': window.navigator.userAgent, }, onload: function(responseDetail) { var result = JSON.parse(responseDetail.responseText); console.log(result); if (result.errmsg == '') { var turingUrl = result.data.url; var turingPrice = result.data.price; var partnerTemplate = ''; if ($('.online-type[data-ebassistant="read"]').length) { partnerTemplate = ''; $('.online-type[data-ebassistant="read"]').append(partnerTemplate.replace("{templateUrl}", turingUrl)); } else if ($('.online-type[data-ebassistant="audio"]').length) { partnerTemplate = '
    在线试读:
    '; $('.online-type[data-ebassistant="audio"]').before(partnerTemplate.replace("{templateUrl}", turingUrl)); }else { partnerTemplate = '
    在线试读:
    '; $("#link-report").after(partnerTemplate.replace("{templateUrl}", turingUrl)); } var buyItemTemplate = '
  • '; buyItemTemplate = buyItemTemplate.replaceAll("{templateUrl}", turingUrl); buyItemTemplate = buyItemTemplate.replace("{templatePrice}", turingPrice); $("#buyinfo ul:nth-child(2)").prepend(buyItemTemplate); } return; } }); return; } function queryXimalaya(isbn, title, author) { GM_xmlhttpRequest({ method: "GET", url: "http://106.52.138.60:8081/ximalaya?isbn=" + isbn + "&title=" + title + "&author=" + author + '&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; } }); return; } function queryDuokan(isbn) { GM_xmlhttpRequest({ method: "GET", url: "http://106.52.138.60:8081/duokan?isbn=" + isbn + '&version=' + version, headers: { 'User-agent': window.navigator.userAgent, }, onload: function(responseDetail) { var result = JSON.parse(responseDetail.responseText); console.log(result); if (result.errmsg == '') { var duokanUrl = result.data.url; var duokanPrice = result.data.price; var partnerTemplate = ''; if ($('.online-type[data-ebassistant="read"]').length) { partnerTemplate = ''; $('.online-type[data-ebassistant="read"]').append(partnerTemplate.replace("{templateUrl}", duokanUrl)); } else if ($('.online-type[data-ebassistant="audio"]').length) { partnerTemplate = '
    在线试读:
    '; $('.online-type[data-ebassistant="audio"]').before(partnerTemplate.replace("{templateUrl}", duokanUrl)); } else { partnerTemplate = '
    在线试读:
    '; $("#link-report").after(partnerTemplate.replace("{templateUrl}", duokanUrl)); } var buyItemTemplate = '
  • '; buyItemTemplate = buyItemTemplate.replaceAll("{templateUrl}", duokanUrl); buyItemTemplate = buyItemTemplate.replace("{templatePrice}", duokanPrice); $("#buyinfo ul:nth-child(2)").prepend(buyItemTemplate); } return; } }); return; } function queryWeread(isbn, title, author) { GM_xmlhttpRequest({ method: "GET", url: "http://106.52.138.60:8081/weread?isbn=" + isbn + "&title=" + title + "&author=" + author + '&version=' + version, headers: { 'User-agent': window.navigator.userAgent, }, onload: function(responseDetail) { var result = JSON.parse(responseDetail.responseText); console.log(result); if (result.errmsg == '') { var duokanUrl = result.data.url; var duokanPrice = result.data.price; var partnerTemplate = ''; if ($('.online-type[data-ebassistant="read"]').length) { partnerTemplate = ''; $('.online-type[data-ebassistant="read"]').append(partnerTemplate.replace("{templateUrl}", duokanUrl)); } else if ($('.online-type[data-ebassistant="audio"]').length) { partnerTemplate = '
    在线试读:
    '; $('.online-type[data-ebassistant="audio"]').before(partnerTemplate.replace("{templateUrl}", duokanUrl)); } else { partnerTemplate = '
    在线试读:
    '; $("#link-report").after(partnerTemplate.replace("{templateUrl}", duokanUrl)); } var buyItemTemplate = '
  • '; buyItemTemplate = buyItemTemplate.replaceAll("{templateUrl}", duokanUrl); buyItemTemplate = buyItemTemplate.replace("{templatePrice}", duokanPrice); $("#buyinfo ul:nth-child(2)").prepend(buyItemTemplate); } return; } }); return; } try { $(".online-partner .online-type:nth-child(1)").attr("data-ebassistant", "read"); $(".online-partner .online-type:nth-child(2)").attr("data-ebassistant", "audio"); } catch(e) { console.log(e); } var newStyle = ``; $("#content").append(newStyle); var regexLinkedData = /