// ==UserScript== // @name 🔥🔥🔥全国图书联盟读秀豆瓣京东图书获取🔥🔥🔥 // @namespace https://huzhu.cn2down.com // @version 0.2 // @description 可以直接显示图书的isbn号,支持读秀、超星、龙岩、全国图书参考联盟,豆瓣,京东,功能还在开发中,敬请期待!!苍鸟资源互助联盟(https://cn2down.com) // @author zenghp2015 // @match *://book.ucdrs.superlib.net/views/specific/* // @match *://book.ucdrs.superlib.net/search* // @match *://book.douban.com/subject/* // @match *://item.jd.com/* // @require https://cdn.bootcdn.net/ajax/libs/jquery/2.0.0/jquery.js // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; let website = ''; const bookInfo = 'https://api.cn2down.com/ebook/book/info'; const isbnReg = /\s*【?ISBN号?】?[:|:]?\s*([0-9\-]+)\s*/; // 按钮模板 const copyTpl = ({title = '', isbn = '', ssid = '', doubanid = '', jdid = '', bookid = ''}) => { 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 = `` return `
${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) => { 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) || ''; console.log(isbn) title = title && title[1].replace(/[\+]+?/g, ' '); ssid = ssid && ssid[1]; isbn = isbn ? isbn[1].replace(/-/g, '') : ''; $('.tutilte').append(copyTpl({title, ssid, isbn})) } else if(location.href.includes("/search")){ // 搜索页 const txtsearch = $('.txtsearch').val(); let isbn = ''; if(txtsearch.length === 13 && /[978|979]/.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) { // prepend request({type: 'ucdrs', ssid}).then(res => { const bookid = res['book_id'] $(lastNode).append(copyTpl({title, ssid, isbn, bookid})); }, err => console.log); } 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] request({type: 'douban', doubanid}).then(res => { const bookid = res['book_id'] $('.subjectwrap').prepend(copyTpl({title, isbn, doubanid, bookid})) }, err => console.log); } } // 京东 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})) } 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', () => { alert('功能还在开发中,敬请期待') }) switch(location.host) { case 'book.ucdrs.superlib.net': ucdrs(); break; case 'book.douban.com': douban(); break; case 'item.jd.com': jd(); break; } } run(); })();