Greasy Fork is available in English.
为豆瓣读书用户想读页面的图书,添加长沙图书馆馆藏查询结果
// ==UserScript== // @name book_douban_ChangShaLib // @name:zh-CN 豆瓣读书-想读-长沙图书馆信息 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 为豆瓣读书用户想读页面的图书,添加长沙图书馆馆藏查询结果 // @author You // @match https://book.douban.com/people/*/wish* // @match https://book.douban.com/people/*/wish // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_listValues // @license MIT // ==/UserScript== var Debug = true; var Reset = false; var I = 0; var TITLE, Booklist, CardNodes, Nodes, QueryR###lt, Done; var UID = document.URL.split("/")[4]; var Total = document .getElementsByClassName("subject-num")[0] .innerText.split("/")[1]; var DoubanUrl = document.URL; var OpacUrl = "https://opac.changshalib.cn/opac/search?&q="; var SearchParam = "&searchWay=title&sortWay=title200Weight&sortOrder=desc&scWay=dim&hasholding=1&searchSource=reader"; function log(info) { if (Debug) console.log(info); } function queryHolding(Title, i) { log(i + "查询:" + Title); GM_xmlhttpRequest({ method: "GET", url: OpacUrl + Title + SearchParam, onload: function (response) { var webText = response.responseText; QueryR###lt = webText.substring( webText.indexOf("检索到: ") + 5, webText.indexOf(" 条结果") ); GM_setValue(UID + Title, QueryR###lt); if (QueryR###lt == "You ") { queryHolding(Title, i); return 0; } if (QueryR###lt != "0") { addLink(QueryR###lt, i, Title); GM_setValue(UID, GM_getValue(UID) + 1); } showStats(i); }, onerror: function () { log("连接失败"); }, }); } function addLink(QueryR###lt, i, Title) { var FontColor = "red"; Nodes = document.createElement("span"); Nodes.class = "cart-info"; Nodes.innerHTML = '<span class="cart-info"><span class="add2cartWidget "><a target="_blank" href="' + OpacUrl + Title + SearchParam + '"class="j a_add2cart add2cart"name="4827310"><span>长沙图书馆(<b style="color:' + FontColor + '">' + QueryR###lt + "</b>)</span></a></span></span>"; CardNodes[i].appendChild(Nodes); } function showStats(i) { log(i); i == Booklist.length - 2 ? (Done = "red") : (Done = ""); if (document.getElementById("LibStats")) { document.getElementById("LibStats").innerHTML = "已找到(<span style='color:" + Done + "'>" + GM_getValue(UID) + "</span>/" + Total + ")"; } else { var dot = document.createElement("span"); dot.className = "gray-dot"; dot.innerText = "."; var span = document.createElement("span"); span.id = "LibStats"; span.innerHTML = span.innerHTML = "已找到(" + GM_getValue(UID) + "/" + Total + ")"; document.getElementsByClassName("sort")[0].appendChild(dot); document.getElementsByClassName("sort")[0].appendChild(span); } } function resetCache() { for (var i = 0; i < GM_listValues().length; i++) { GM_deleteValue(GM_listValues()[0]); } } (function () { Booklist = document.getElementsByTagName("h2"); CardNodes = document.getElementsByClassName("cart-actions"); if (Reset) resetCache(); if (GM_getValue(UID) == undefined) GM_setValue(UID, 0); for (var i = I; i < Booklist.length - 1; i++) { TITLE = Booklist[i].innerText; if ( GM_getValue(UID + TITLE) != undefined && GM_getValue(UID + TITLE) != "You " ) { log("缓存:" + TITLE + GM_getValue(UID + TITLE)); showStats(i); if (GM_getValue(UID + TITLE) != "0") { addLink(GM_getValue(UID + TITLE), i, TITLE); } } else { (function (t, a) { setTimeout(function () { queryHolding(t, a); }, 500 * a); })(TITLE, i); } } })();