您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在豆瓣读书侧栏中显示济南大学图书馆馆藏信息。同时支持校内外访问。由于学校限制,校外无法定位图书位置,因此本脚本默认为校内访问。若要默认校外请修改 outOfSchool 变量。
// ==UserScript== // @name 豆瓣读书显示济南大学图书馆馆藏 // @name: zh-CN // @namespace ujn_doubanbook // @version 1.1 // @description 在豆瓣读书侧栏中显示济南大学图书馆馆藏信息。同时支持校内外访问。由于学校限制,校外无法定位图书位置,因此本脚本默认为校内访问。若要默认校外请修改 outOfSchool 变量。 // @author Sun // @license MIT // @match https://book.douban.com/subject/* // @grant GM_xmlhttpRequest // @connect 202.194.76.102 // @connect mlib.ujn.edu.cn // ==/UserScript== let outOfSchool = false; // 当前是否处于校外环境下,若是为true,否为false // 校内根据 marc 和 isbn 获取图书余量 function getBook(marc, isbn, title) { GM_xmlhttpRequest({ method: "GET", url: "http://202.194.76.102:8080/opac/ajax_isbn_marc_no.php?marc_no=" + marc + "&isbn=" + isbn, onload: function(res) { if (res.status == 200) { var text = res.responseText; var json = JSON.parse(text); insertBook(marc, title, json.lendAvl.match(/\d+/g)); console.log(json); } } }); } // 校外根据 isbn 获取图书余量 function getBookOutSchool(isbn) { GM_xmlhttpRequest({ method: "GET", url: "http://mlib.ujn.edu.cn/search/searchList?kw=" + isbn + "&schoolid=614&xc=6&searchtype=isbn", onload: function(res) { if (res.status === 200) { const temp_element = (new DOMParser()).parseFromString(res.responseText, "text/html"); // let temp_element = document.createElement('html') // temp_element.innerHTML = res.responseText; // console.log(temp_element.getElementsByClassName("list")[0].children); if (temp_element.getElementsByClassName("list")[0].children.length === 0) { document.getElementById('ujn_lib_booklist').innerHTML = "<p>图书馆没有这本书(提示:可以试试同书的不同版本)</p>"; } for (const li of temp_element.getElementsByClassName("list")[0].children) { let info = JSON.parse(li.getElementsByTagName("input")[0].getAttribute("value")); insertBook(info, info.title, li.innerText.match(/可借\/总藏:(\d+)\/(\d+)/).slice(1, 3).reverse()); } } } }); } // 将图书信息插入至侧栏 ujn_lib_booklist 中 function insertBook(marc, title, remains) { let ul = document.getElementById('ujn_lib_booklist'); // 侧栏 let li = document.createElement("li"); // 条目 li.setAttribute('class', 'mb8 pl'); let div = document.createElement("div"); // 书名 div.setAttribute('class', 'meta-wrapper'); let div_remain = document.createElement("div"); // 余量 div_remain.setAttribute('class', 'count'); div_remain.innerText = "馆藏:" + remains[0] + " 可借:" + remains[1]; let a = document.createElement("a"); // 链接 if(!outOfSchool) { a.setAttribute('href', 'http://202.194.76.102:8080/opac/item.php?marc_no=' + marc); } else { a.setAttribute('href', 'javascript:void(0)'); a.addEventListener("click", () => { openBookPage(marc); }); } a.innerText = title; div.appendChild(a); div.appendChild(div_remain); li.appendChild(div); ul.appendChild(li); } // 校外打开图书页面 function openBookPage(info) { let form = document.createElement("form"); form.setAttribute('id', 'postform'); form.setAttribute('method', 'POST'); form.setAttribute('action', 'https://mlib.ujn.edu.cn/search/bookDetail'); form.setAttribute('target', 'new_window'); let xc = document.createElement("input"); xc.setAttribute("name", "xc"); xc.setAttribute("value", 6); form.appendChild(xc); let sid = document.createElement("input"); sid.setAttribute("name", "schoolid"); sid.setAttribute("value", 614); form.appendChild(sid); let dp = document.createElement("input") dp.setAttribute("name", "detailParam"); dp.setAttribute("value", JSON.stringify(info)); form.appendChild(dp); document.head.appendChild(form); //window.open('', 'new_Window'); form.submit(); } (function() { 'use strict'; // 检查 URL 是否合规 if( ! /https:\/\/book\.douban\.com\/subject\/\d+\/$/.test(location.href) ) { return; } // 侧栏创建显示区域 let div = document.createElement("div"); div.setAttribute('class', 'gray_ad'); div.setAttribute('id', 'ujn_lib'); let h2 = document.createElement("h2"); h2.innerText = "济南大学图书馆馆藏"; div.appendChild(h2); let ul = document.createElement("ul"); ul.setAttribute('id', 'ujn_lib_booklist'); ul.innerHTML = "<p>查询中</p>"; div.appendChild(ul); document.getElementsByClassName('aside')[0].prepend(div); const isbn = document.head.querySelector("meta[property='book:isbn']").content; if(!outOfSchool) { GM_xmlhttpRequest({ method: "POST", timeout: 2000, url: "http://202.194.76.102:8080/opac/ajax_search_adv.php" , data: "{\"searchWords\":[{\"fieldList\":[{\"fieldCode\":\"05\",\"fieldValue\":" + isbn + "}]}],\"filters\":[],\"limiter\":[],\"sortField\":\"relevance\",\"sortType\":\"desc\",\"pageSize\":20,\"pageCount\":1,\"locale\":\"\",\"first\":true}", onload: function (res) { if (res.status === 200) { document.getElementById('ujn_lib_booklist').innerHTML = ""; var json = JSON.parse(res.responseText); console.log(json); let books = json.content; if (books.length === 0) { document.getElementById('ujn_lib_booklist').innerHTML = "<p>图书馆没有这本书</p>"; } else { for (const item of books) { getBook(item.marcRecNo, item.isbn, item.title); } } } }, ontimeout: function () { document.getElementById('ujn_lib_booklist').innerHTML = "<p>请求超时</p><p>不在学校?试试<a id='ujn_switchtoout' href='javascript:void(0);'>校外访问</a></p>"; document.getElementById('ujn_lib_booklist').addEventListener("click", () => { document.getElementById('ujn_lib_booklist').innerHTML = ""; outOfSchool = true; getBookOutSchool(isbn); }); } }); } else { document.getElementById('ujn_lib_booklist').innerHTML = ""; getBookOutSchool(isbn); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址