Greasy Fork

Greasy Fork is available in English.

图书互助

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

当前为 2023-11-22 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

        // ==UserScript==
        // @name	    图书互助
        // @namespace       安装在图书馆参考咨询联盟可查看SS号
        // @version	    1.0.1
        // @include	    *book.dglib.superlib.net/*
        // @include	    *book.ucdrs.superlib.net*
        // @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://api.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 "查询不到书籍,数据库暂时只有2020年以内出版的";
            }
        });
}

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 main() {
    var bookList = document.querySelectorAll("table.book1");
    if (bookList.length == 0) {
        bookList = document.querySelectorAll("table.books");
    }
    if (bookList.length == 0) {
        bookList = document.querySelectorAll("table");
    }
    for (var i = 0; i < bookList.length; i++) {
        var dxid = document.getElementById("dxid" + i);
        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);
        });
    }
}

function detailMain() {
    var string = location.href.match(/(Number).*?(?=&)/);
    var value = string ? string[0].replace('Number=', '') : '';

    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);
    });
}

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