// ==UserScript== // @name 🔥🔥🔥全国图书联盟读秀豆瓣京东图书获取🔥🔥🔥 // @namespace https://hz.cn2down.com // @version 0.2.2 // @description 可以直接显示图书的isbn号,支持读秀、超星、龙岩、全国图书参考联盟,豆瓣,京东,功能还在开发中,敬请期待!!苍鸟资源互助联盟(https://hz.cn2down.com) // @author zenghp2015 // @match *://book.ucdrs.superlib.net/views/specific/* // @match *://book.ucdrs.superlib.net/search* // @match *://book.douban.com/subject/* // @match *://read.douban.com/category/* // @match *://item.jd.com/* // @require https://cdn.bootcdn.net/ajax/libs/jquery/2.0.0/jquery.js // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/437492/%F0%9F%94%A5%F0%9F%94%A5%F0%9F%94%A5%E5%85%A8%E5%9B%BD%E5%9B%BE%E4%B9%A6%E8%81%94%E7%9B%9F%E8%AF%BB%E7%A7%80%E8%B1%86%E7%93%A3%E4%BA%AC%E4%B8%9C%E5%9B%BE%E4%B9%A6%E8%8E%B7%E5%8F%96%F0%9F%94%A5%F0%9F%94%A5%F0%9F%94%A5.user.js // @updateURL https://update.greasyfork.icu/scripts/437492/%F0%9F%94%A5%F0%9F%94%A5%F0%9F%94%A5%E5%85%A8%E5%9B%BD%E5%9B%BE%E4%B9%A6%E8%81%94%E7%9B%9F%E8%AF%BB%E7%A7%80%E8%B1%86%E7%93%A3%E4%BA%AC%E4%B8%9C%E5%9B%BE%E4%B9%A6%E8%8E%B7%E5%8F%96%F0%9F%94%A5%F0%9F%94%A5%F0%9F%94%A5.meta.js // ==/UserScript== (function() { 'use strict'; let website = ''; const isbnReg = /\s*【?ISBN号?】?[:|:]?\s*([0-9\-]+)\s*/; // 按钮模板 const copyTpl = ({title = '', isbn = '', ssid = '', doubanid = '', jdid = '', bookid = '', puzzle = false}) => { let str = title; if(isbn && ssid) { str += `_${isbn}_${ssid}` } else if(!isbn && ssid){ str += `__${ssid}` } else if(isbn && !ssid){ str += `_${isbn}` } let downBtn = `` let copyBtn = `` let titleBtn = `` let ssidBtn = `` let isbnBtn = `` let jdBtn = `` let doubanidBtn = `` let puzzleBtn = `` return `
${puzzle ? puzzleBtn : ''} ${bookid && downBtn} ${str && copyBtn} ${title && titleBtn} ${ssid && ssidBtn} ${isbn && isbnBtn} ${doubanid && doubanidBtn} ${jdid && jdBtn}
` } // 复制 const copyText = text => { if (navigator.clipboard) { navigator.clipboard.writeText(text); } else { let textarea = document.createElement('textarea'); document.body.appendChild(textarea); textarea.style.position = 'absolute'; textarea.style.clip = 'rect(0 0 0 0)'; textarea.value = text; textarea.select(); document.execCommand('copy', true); textarea.remove(); } } const request = (data) => { const bookInfo = ''; return new Promise((resolve, reject) => { const query = objToUrl(data); $.ajax({ url: `${bookInfo}?${query}`, dataType: 'json', timeout: 3000, success: (response) => { const {errno, errmsg, data} = response; if(errno !== 0) { reject(errmsg); } else { resolve(data) } } }) }) } const objToUrl = obj => { const query = Object.keys(obj).map(key => { return key + '=' +obj[key]; }) return query.join('&'); } // 全国图书联盟 const ucdrs = () => { if (location.href.includes("/views/specific/")) { // copy 逻辑 let text = decodeURIComponent($("script:contains(send_requestajax)").text()) let title = text.match(/sname=(.*?)&/) || ''; let ssid = text.match(/ssn=(\d{3,})/) || ''; let isbn = text.match(isbnReg) || ''; title = title && title[1].replace(/[\+]+?/g, ' '); ssid = ssid && ssid[1]; isbn = isbn ? isbn[1].replace(/-/g, '') : ''; if (ssid) { $('.tutilte').append(copyTpl({title, ssid, isbn})); } else { $('.tutilte').append(copyTpl({title, isbn})); } } else if(location.href.includes("/search")){ // 搜索页 const txtsearch = $('.txtsearch').val(); let isbn = ''; if(txtsearch.length === 13 && /[978|979]+?\d{10}/.test(txtsearch)) { isbn = $.trim(txtsearch) } $('td[id="b_img"]').each((i, el) => { const lastNode = $(el).parent("tr").find('td:last'); const title = $(el).parent("tr").find('input[name*="title"]').val().replace(/<[^>]*>/ig, ''); const ssid = $(el).parent("tr").find('input[name*="ssid"]').val(); if (ssid) { $(lastNode).append(copyTpl({title, ssid, isbn})); } else { $(lastNode).append(copyTpl({title, isbn})); } }); } } // 豆瓣 const douban = () => { if (location.href.includes("/subject")) { const title = $.trim($('h1 span').text()) || '' let isbn = ($('.subject #info').text()).match(isbnReg) || '' let doubanid = location.href.match(/\/(\d+?)\//) || '' doubanid = doubanid && doubanid[1] isbn = isbn && isbn[1] $('.subjectwrap').prepend(copyTpl({title, isbn, doubanid})) } } // 京东 const jd = () => { let jdid = location.href.match(/\/(\d+?)\.html/) || '' const title = $.trim($('.sku-name').text()); let isbn = ($('.p-parameter-list').text()).match(isbnReg) || '' isbn = isbn && $.trim(isbn[1]) jdid = jdid && $.trim(jdid[1]) $('.product-intro .itemInfo-wrap').prepend(copyTpl({title, isbn, jdid})) } const getSite = () => { const host = location.host if(host === 'book.ucdrs.superlib.net') return 'ucdrs' if(host === 'book.douban.com') return 'douban' if(host === 'item.jd.com') return 'jd' if(host === 'read.douban.com') return 'read-douban' return false; } function run() { // GM_addStyle(GM_getResourceText ("customCSS")); $(document).on('click', '.cn2down .copy, .cn2down .copy_title, .cn2down .copy_ssid, .cn2down .copy_isbn, .cn2down .copy_doubanid', function(event){ event.preventDefault(); const text = $(this).data('text'); const message = text ? '(复制成功)' : '(暂无信息)' copyText(text) $(this).siblings('.copy_status').text(message).show().delay(1000).hide(0); }) // 图书互助 $(document).on('click', '.cn2down .download', function() { const ssid = $(this).data('ssid'); const doubanid = $(this).data('doubanid'); const jdid = $(this).data('jdid'); const isbn = $(this).data('isbn'); const title = $(this).data('title') let query = {}; switch(getSite()) { case 'ucdrs': query = {type:'ssid', query: title} break; case 'douban': query = {type:'doubanid', query: title} break; default: alert('暂支持全国图书联盟、豆瓣') return false; } // const url = "https://hz.cn2down.com/search?" + objToUrl(query); // window.open(url, "_blank") }) // 疑难查询 $(document).on('click', '.cn2down .copy_puzzle', function(){ const title = $(this).data('title') const url = "https://hz.cn2down.com/search?type=name&query=" + title; window.open(url, "_blank") }) const type = getSite(); if(type === 'jd') jd() if(type === 'douban') douban() if(type === 'ucdrs') ucdrs() } run(); })();