// ==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 // @downloadURL none // ==/UserScript== var Debug = true; var Reset = false; var I = 0; var TITLE, Booklist, CardNodes, Nodes, QueryResult; var UID = document.URL.split("/")[4]; 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) { setTimeout( GM_xmlhttpRequest({ method: "GET", url: OpacUrl + Title + SearchParam, onload: function (response) { var webText = response.responseText; QueryResult = webText.substring( webText.indexOf("检索到: ") + 5, webText.indexOf(" 条结果") ); GM_setValue(UID + Title, QueryResult); if (QueryResult == "You ") { queryHolding(Title, i); return 0; } if (QueryResult != "0") { addLink(QueryResult, i, Title); GM_setValue(UID, GM_getValue(UID) + 1); showStats(); } // i = i + 1; // if (i < Booklist.length - 1) { // Title = Booklist[i].innerText; // queryHolding(Title); // } }, onerror: function () { log("连接失败"); }, }), 500 ); } function addLink(QueryResult, i, Title) { var FontColor = "red"; Nodes = document.createElement("span"); Nodes.class = "cart-info"; Nodes.innerHTML = '长沙图书馆(' + QueryResult + ")"; CardNodes[i].appendChild(Nodes); } function showStats() { if (document.getElementById("LibStats")) { document.getElementById("LibStats").innerHTML = "已找到(" + GM_getValue(UID) + "/" + document.getElementsByTagName("h1")[0].innerText.split("(")[1]; } else { log(GM_getValue(UID)); 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) + "/" + document.getElementsByTagName("h1")[0].innerText.split("(")[1]; 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 " && GM_getValue(UID + TITLE) != "0") { log("缓存:" + TITLE + GM_getValue(UID + TITLE)); addLink(GM_getValue(UID + TITLE), i, TITLE); } else { queryHolding(TITLE, i); } } showStats(); })();