// ==UserScript== // @name 文献互助小帮手:①从图书馆参考咨询联盟(ucdrs)或读秀(duxiu)获取ssid/dxid ②从中美百万(cadal)获取ssno ③提供ucdrs、duxiu、cadal到豆瓣图书的链接 // @namespace ucdrs.superlib.net // @version 1.5.0 // @author Theron // @match *://book.ucdrs.superlib.net/views/specific/* // @match *://book.ucdrs.superlib.net/search* // @match *://search.douban.com/book/subject_search* // @match *://book.douban.com/isbn/* // @match *://book.douban.com/subject_search* // @match *://book.douban.com/tag/* // @match *://book.douban.com/subject/* // @match *://book.douban.com/series/* // @match *://book.douban.com/works/* // @match *://book.douban.com/author/*/books* // @match *://book.douban.com/people/*/wish* // @match *://book.douban.com/people/*/do* // @match *://book.douban.com/people/*/collect* // @match *://www.douban.com/doulist/* // @match *://book.douban.com/cart* // @match *://cadal.edu.cn/cadalinfo/search* // @match *://cadal.edu.cn/cardpage/bookCardPage?*ssno=* // @include */search* // @include */bookDetail.jsp* // @include */chapter.jsp* // @description 显示图书馆参考咨询联盟(ucdrs)或读秀及其镜像站(duxiu)上文献的ssid或dxid(ssid不存在时),用于群组找书、文献互助、图书互助等场景;显示大学数字图书馆国际合作计划(cadal)的书号-ssno,用于查询下载中美百万书册;另外在搜索、详情页等处添加ucdrs、duxiu、cadal和豆瓣的双向导航链接。To搜索[红太狼的平底锅]的朋友:提供红太狼的平底锅的部分功能,如显示ssid,下载请自行找百度网盘群组;显示dxid和双向链接为平底锅没有的新加功能。 // @grant none // @license Copyright Theron // @downloadURL none // ==/UserScript== /* jslint esversion: 6 */ /*globals jQuery */ (function () { 'use strict'; function slim(s) { return s.replaceAll(/ +/g, "").trim(); } function showbid(bookid, idtype) { return `
${idtype}${bookid}
`; } function sepit(s, sep) { if (sep === "|") { s = " | " + s; } else if (sep === "br") { s = s + "' + s + '
'; } return s; } function ucdrslink(bookname, sep = "|", text = '参考联盟') { return sepit(`${text}`, sep); } function dblink(bookname, isbn = "", sep = "|") { if (isbn === "") { return sepit(`豆瓣搜索`, sep); } return sepit(`豆瓣直达`, sep); } function dxtoc(url) { console.log(url); url = url.replace("bookDetail.jsp", "chapter.jsp").replace(/sw=[^/&]*/, "sw=1%202%203%20%E4%B8%AD%204%205%206%207%208%20%E5%A4%A7%20%E5%8F%82%E8%80%83%209%20%E6%98%AF%20%E4%BA%BA%20%E4%B8%8A%20%E9%99%84%20%E4%B8%8D%20%E5%B0%8F%20%E4%BB%8E%20%E4%B9%8B%20%E4%B8%8B%20%E6%9C%89%20%E7%94%A8%20%E4%BB%A5%20%E5%A4%9A%20%E5%90%8E%20%E8%A1%A8%20%E4%BB%80%E4%B9%88%20%E5%8D%81%2010%20%E9%83%A8%E5%88%86%20%E5%89%8D%20%E5%88%B0%20%E5%9B%BE%20%E6%88%91%20%E5%A6%82%E4%BD%95%20%E8%A6%81%20%E5%8F%AF%20%E5%86%85%20%E9%87%8C%20%E8%AE%B0%20%E5%8C%BA%20%E5%A4%96%20%E5%A4%A9%20%E6%9D%A5%20%E4%BD%A0%20%E8%A5%BF%20%E5%86%8D%20%E5%BA%8F%20%E5%8D%97%20%E6%AD%A5%E9%AA%A4%20%E5%90%8C%20%E5%BD%95%20%E9%99%84%20%E5%8E%BB%20%E5%A5%B3%20%E7%AF%87%20%E5%BC%80%20%E6%96%87%20%E9%83%BD%20%E9%A2%98%20%E4%B8%9C%20%E5%B0%B1%20%E8%8A%82%20%E4%BB%96%20%E4%B9%9F%20%E5%85%AC%20%E5%8C%97%20%E7%BB%93%20%E5%8F%B3%20%E5%8F%88%20%E5%B0%91%20%E7%99%BE%20%E9%82%A3%20%E8%BF%99%20%E5%85%B3%20%E6%B2%A1%20%E5%8D%83%20%E8%A1%A8%E6%A0%BC%20%E4%B8%AA%20%E7%94%B7%20%E7%AB%A0%200%20%E8%AE%BA%20%E5%87%A0%20%E4%BB%8A%20%E5%B7%A6%20%E4%B8%87"); return `目录`; } function iid2ssid(iid) { var ssid = ""; var part = ""; var tailhex = parseInt(iid.substring(iid.length - 2), 16); var encoded = iid.substring(0, iid.length - 16); var i; for (i = 0; i < encoded.length; i = i + 2) { part = encoded.substring(i, i + 2); ssid += String.fromCharCode(parseInt(part, 16) - tailhex); } return ssid.replace(/\//g, "").match(/\d{8}/)[0]; } var pageurl = window.location.href; var bookid; var bookname; var ssid; var dxid; var img; var snippet; var m_isbn; var m_ssn; var m_dxid; var m_iid; if (pageurl.includes("search.douban.com/book/subject_search") || pageurl.includes("book.douban.com/subject_search")) { jQuery("div.item-root > div.detail > div.title").each(function (i, el) { bookname = slim(jQuery(el).text()); jQuery(el).find("a").after(ucdrslink(bookname)); }); } else if (pageurl.includes("book.douban.com/works")) { jQuery("div.bkdesc > a.pl2").each(function (i, el) { bookname = slim(jQuery(el).text()); jQuery(el).after(ucdrslink(bookname)); }); } else if (pageurl.includes("book.douban.com/cart")) { jQuery("td.book_title > a").each(function (i, el) { bookname = slim(jQuery(el).text()); jQuery(el).after(ucdrslink(bookname, '|', '参')); }); } else if (pageurl.includes("www.douban.com/doulist")) { jQuery("div.title > a").each(function (i, el) { bookname = slim(jQuery(el).text()); var src = slim(jQuery(el).parent().prev().prev().text()); if (src === "来自:豆瓣读书") { jQuery(el).after(ucdrslink(bookname)); } }); } else if (pageurl.match("book.douban.com.*/(series|tag|do|wish|collect)")) { jQuery("div.info > h2 > a").each(function (i, el) { bookname = slim(jQuery(el).text()); jQuery(el).after(ucdrslink(bookname)); }); } else if (pageurl.includes("book.douban.com/author")) { jQuery("h6 > a").each(function (i, el) { bookname = slim(jQuery(el).text()); jQuery(el).after(ucdrslink(bookname)); }); } else if (pageurl.includes("book.douban.com/subject")) { var json = jQuery("script[type='application/ld+json']").text(); bookname = json.match(/"name" : "(.*?)",/)[1]; m_isbn = json.match(/"isbn" : "(.*?)",/); snippet = '${snippet}
`); } else if (pageurl.includes("chapter.jsp?") && pageurl.includes("dxNumber=")) { var also = jQuery("#also"); also.after('以下目录非完整版,由于读秀限制,仅展示匹配了 文献互助小帮手 脚本内置关键词的条目。
'); } })();