图书互助

可以直接显示文献的ss号或dxid进行互助,,可以秒传和生成pdf,PC、手机、MAC、苹果设备都可用,可查询全国图书馆参考咨询联盟、超星、读秀、龙岩、东莞图书馆,获取全文PDF。

// ==UserScript==
// @name	    图书互助
// @namespace       安装在图书馆参考咨询联盟可查看SS号
// @version	    1.0.5
// @include	    *book.dglib.superlib.net/*
// @include	    *book.ucdrs.superlib.net*
// @include	    *www.sslibrary.com/*
// @include         *book.duxiu.com*
// @description     可以直接显示文献的ss号或dxid进行互助,,可以秒传和生成pdf,PC、手机、MAC、苹果设备都可用,可查询全国图书馆参考咨询联盟、超星、读秀、龙岩、东莞图书馆,获取全文PDF。
// @copyright	    pdfshuwu
// @grant	    none
// @namespace pdfshuwu
// @license      MIT
// ==/UserScript==

function fetchSsidByDxid(dxid) {
    var myHeaders = new Headers();
    myHeaders.append("User-Agent", "Apifox/1.0.0 (https://apifox.com)");
    myHeaders.append("Content-Type", "application/json");

    var raw = JSON.stringify({ "dxDxid": dxid });

    var requestOptions = {
        method: 'POST',
        headers: myHeaders,
        body: raw,
        redirect: 'follow'
    };

    return fetch("https://apicf.pdfshuwu.com/api/front/duxiu/search", requestOptions)
        .then(response => response.json())
        .then(data => {
            if (data.code === "200" && data.data && data.data.lists && data.data.lists.length > 0) {
                return data.data.lists[0].dxSsid; // 返回SSID
            } else {
                return "查询不到书籍,数据库暂时只有2018年以内出版的";
            }
        });
}
function fetchSsidBySsid(ssid) {
    var myHeaders = new Headers();
    myHeaders.append("User-Agent", "Apifox/1.0.0 (https://apifox.com)");
    myHeaders.append("Content-Type", "application/json");

    var raw = JSON.stringify({ "dxSsid": ssid });

    var requestOptions = {
        method: 'POST',
        headers: myHeaders,
        body: raw,
        redirect: 'follow'
    };

    return fetch("https://apicf.pdfshuwu.com/api/front/duxiu/search", requestOptions)
        .then(response => response.json())
        .then(data => {
            if (data.code === "200" && data.data && data.data.lists && data.data.lists.length > 0) {
                return data.data.lists[0].dxSsid; // 返回SSID
            } else {
                return "查询不到书籍,数据库暂时只有2018年以内出版的";
            }
        });
}
// 跳转
function createBookLink(ssid) {
    var b = document.createElement("a");
    b.target = "_blank";
    b.innerText = "图书互助";
    b.style.color = 'green';
    b.style.fontSize = '14px';
    b.style.fontWeight = 'bold';
    b.href = "https://www.pdfshuwu.com/details/" + ssid;
    document.body.appendChild(b);
    return b;
}

function handleExample1() {
    var bookList = document.querySelectorAll("table.book1");
    console.log(bookList, 121);
    var btnInput = document.getElementsByClassName("btnInput")
    if (bookList.length == 0) {
        bookList = document.querySelectorAll("table.books");
    }
    if (bookList.length == 0) {
        // bookList = document.querySelectorAll("table");
        bookList = document.querySelectorAll(".books li");
    }
    if (btnInput.length == 1) {
        for (var j = 0; j < bookList.length; j++) {
            (function (index) {
                var dxid = document.getElementById("dxid" + index);
                var dxidVal = dxid.value;
                fetchSsidByDxid(dxidVal).then(ssid => {
                    var p = document.createElement("p");
                    p.innerText = "SSID: " + ssid;
                    p.style.color = 'red';
                    p.style.fontSize = '16px';
                    p.style.fontWeight = 'bold';
                    var blink = createBookLink(ssid);
                    if (blink) {
                        dxid.parentNode.appendChild(p)
                        dxid.parentNode.appendChild(blink)
                    }
                }).catch(error => {
                    console.error('Error fetching ssid:', error);
                });
            })(j);
        }
    } else {
        for (var i = 0; i < bookList.length; i++) {
            (function (index) {
                var dxid = document.getElementById("dxid" + index);
                var dxidVal = dxid.value;
                fetchSsidByDxid(dxidVal).then(ssid => {
                    var p = document.createElement("p");
                    p.innerText = "SSID: " + ssid;
                    p.style.color = 'red';
                    p.style.fontSize = '16px';
                    p.style.fontWeight = 'bold';
                    var blink = createBookLink(ssid);
                    if (blink) {
                        var tr = document.createElement('tr');
                        var td = document.createElement('td');
                        td.colSpan = '3';
                        td.style.paddingLeft = '3%';
                        td.appendChild(p);
                        td.appendChild(blink);
                        tr.appendChild(td);
                        dxid.parentNode.parentNode.parentNode.appendChild(tr);
                    }
                }).catch(error => {
                    console.error('Error fetching ssid:', error);
                });
            })(i);
        }
    }
}

function getSsidFromUrl(queryString) {
    // 创建一个 URL 对象
    const params = new URLSearchParams(queryString)

    // 获取 ssid 参数的值
    var ssidValue = params.get("ssid");
    return ssidValue
}

function handleExample2() {
    var observer = new MutationObserver(function (mutationsList, observer) {
        // 当页面中的 DOM 发生变化时,检查是否加载了目标元素
        var liElements = document.querySelectorAll("li.fl.zli_info");

        if (liElements.length > 0) {
            console.log("li.fl.zli_info 元素已经加载");
            liElements.forEach(function (li) {
                var aTag = li.querySelector("a");
                // 如果 a 标签存在,则获取 href 属性值
                if (aTag) {
                    var hrefValue = aTag.getAttribute("href");

                    fetchSsidBySsid(getSsidFromUrl(hrefValue)).then(ssid => {

                        var p = document.createElement("p");
                        p.innerText = "SSID: " + ssid;
                        p.style.color = 'red';
                        p.style.fontSize = '15px';
                        p.style.fontWeight = 'bold';
                        var blink = createBookLink(ssid);
                        if (blink) {
                            var tr = document.createElement('tr');
                            var td = document.createElement('td');
                            td.colSpan = '3';
                            td.style.paddingLeft = '3%';
                            td.appendChild(p);
                            td.appendChild(blink);
                            tr.appendChild(td);
                            console.log(liElements);
                            aTag.parentNode.parentNode.appendChild(tr);
                        }
                    }).catch(error => {
                        console.error('Error fetching ssid:', error);
                    });

                }
            });


            // 停止监听
            observer.disconnect();
        }
    });

    // 配置 MutationObserver,监听子节点的变化
    observer.observe(document.body, { childList: true, subtree: true });
}
function main() {
    const currentUrl = window.location.href;
    // 根据不同的网站 URL 来执行对应的函数
    if (currentUrl.includes("book.ucdrs.superlib.net/")) {
        handleExample1();
    } else if (currentUrl.includes("www.sslibrary.com")) {
        handleExample2();
    } else {
        console.log("该网站没有特定操作");
    }
}

function detailMain() {
    var string = location.href.match(/(Number).*?(?=&)/);
    var value = string ? string[0].replace('Number=', '') : '';
    const currentUrl = window.location.href;
    // 根据不同的网站 URL 来执行对应的函数
    if (currentUrl.includes("book.ucdrs.superlib.net/")) {
        fetchSsidByDxid(value).then(ssid => {
            var p = document.createElement("p");
            p.innerText = 'SSID:' + ssid;
            p.style.color = 'red';
            p.style.fontSize = '16px';
            p.style.fontWeight = 'bold';

            var blink = createBookLink(ssid);
            var bookImg = document.getElementsByClassName('tubookimg')[0];
            if (bookImg && blink) { // 检查bookImg是否存在
                bookImg.appendChild(p);
                bookImg.appendChild(blink);
            } else {
                console.error('Element not found: .tubookimg');
            }
        }).catch(error => {
            console.error('Error fetching ssid:', error);
        });
    } else {
        console.log("该网站没有特定操作");
    }

}

(function () {
    /// entry
    try {
        main();
        detailMain();
    } catch (e) {
        console.error(e);
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址