// ==UserScript== // @name 图书馆SS显示 // @namespace book.ucdrs // @version 0.2.1 // @author wenmin92 // @match *://book.ucdrs.superlib.net/search* // @match *://book.ucdrs.superlib.net/views/specific/* // @description 查询全国图书馆参考咨询联盟中图书的SS, 并生成文件名 // @license MIT // @downloadURL none // ==/UserScript== function insertBefore(parent, text, nodeType = 'dd') { const div = document.createElement(nodeType); div.innerText = text; parent.insertBefore(div, parent.firstChild); } function makeFileName() { let name = document.querySelector('#paper_one > input[name=title]').value; if (/第.版/.test(name)) { name = name.replace(/\s*(第.版)\s*/, ' ($1)'); } const content = document.querySelector('#paper_one > input[name=content]').value; let author = content.match(/【作 者】(.*)\n/)[1].replace(/;|,/g, ', ').replace(/((.{1,3}))/g, '[$1]').replace(/((.{3,}?))/g, ''); let publisher = content.match(/【出版项】(.*)\n/)[1].replace(/^.*?:/, '').match(/(.*?),/)[1]; let publishDate = content.match(/【出版项】(.*)\n/)[1].replace(/^.*?:/, '').match(/,([\d.]+)/)[1]; let pages = content.match(/【形态项】(\d+)/)[1]; return `【文件名】${name}, ${author}, ${publisher}, ${publishDate}, ${pages}P`; } function doSpecific() { const el = document.querySelector('script[language]:not([src])'); const bookInfo = document.querySelector('.tubox dl'); if (el) { const ss = el.innerText.match(/ssn=(\d{3,})/)?.[1]; let dx = '' if (ss) { insertBefore(bookInfo, makeFileName()); insertBefore(bookInfo, `【SS】${ss}`); } else if(dx = location.href.match(/dxNumber=(\d+)/)?.[1]) { insertBefore(bookInfo, `【DX】${dx}`); } } } function doSearch() { document.querySelectorAll('td[id="b_img"]').forEach(item => { const ss = item.parentElement.querySelector('input[name*="ssid"]').value; if (ss) { item.nextElementSibling.append('SS:' + ss); } else { const dxNumber = item .querySelector('a[href*="dxNumber"]') .getAttribute('href') .match(/dxNumber=(\d+)/)?.[1]; dxNumber && item.nextElementSibling.append('DX:' + dxNumber); } }); } if (location.href.includes('/views/specific/')) { doSpecific(); } else if (location.href.includes('/search')) { doSearch(); }