Greasy Fork

Greasy Fork is available in English.

从图书馆参考咨询联盟(ucdrs)或读秀(duxiu)获取ss号/dx号,以及ucdrs和豆瓣双向导航

显示图书馆参考咨询联盟(ucdrs)或读秀及其镜像站(duxiu)上文献的ssid号或dxid号(ssid不存在时),用于群组找书、文献互助、图书互助等场景;另外在搜索、详情页等处添加ucdrs和豆瓣的双向导航链接。To搜索[红太狼的平底锅]的朋友:提供红太狼的平底锅的部分功能,如显示ssid,下载请自行找百度网盘群组;显示dxid和双向链接为平底锅没有的新加功能。

当前为 2022-01-01 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         从图书馆参考咨询联盟(ucdrs)或读秀(duxiu)获取ss号/dx号,以及ucdrs和豆瓣双向导航
// @namespace    ucdrs.superlib.net
// @version      1.3.0
// @author       Theron
// @match        *://book.ucdrs.superlib.net/views/specific/*
// @match        *://book.ucdrs.superlib.net/search*
// @match        *://search.douban.com/book/subject_search*
// @match        *://book.douban.com/subject_search*
// @match        *://book.douban.com/tag/*
// @match        *://book.douban.com/subject/*
// @match        *://book.douban.com/series/*
// @match        *://book.douban.com/works/*
// @match        *://book.douban.com/author/*/books*
// @match        *://book.douban.com/people/*/wish*
// @match        *://book.douban.com/people/*/do*
// @match        *://book.douban.com/people/*/collect*
// @match        *://www.douban.com/doulist/*
// @match        *://book.douban.com/cart*
// @include      */search*
// @include      */bookDetail.jsp*
// @require      https://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @description  显示图书馆参考咨询联盟(ucdrs)或读秀及其镜像站(duxiu)上文献的ssid号或dxid号(ssid不存在时),用于群组找书、文献互助、图书互助等场景;另外在搜索、详情页等处添加ucdrs和豆瓣的双向导航链接。To搜索[红太狼的平底锅]的朋友:提供红太狼的平底锅的部分功能,如显示ssid,下载请自行找百度网盘群组;显示dxid和双向链接为平底锅没有的新加功能。
// @grant        none
// @license      Copyright Theron
// ==/UserScript==

(function () {
    'use strict';
    function slim(s) {
        return s.replaceAll(/  +/g, "").trim();
    }
    function showbid(bookid, idtype) {
        return `<p style="text-align: center; margin-top: 5px; margin-bottom: 5px; clear:both;"><span style="color: red; font-size: 13px; padding-right: 3px;">${idtype}</span><span style="color: blue; font-size: 13px; font-weight: bold;">${bookid}</span></p>`;
    }

    var pageurl = window.location.href;
    if (pageurl.includes("/subject_search")) {
        $("div.item-root > div.detail > div.title").each((i, el) => {
            let bookname = slim($(el).text());
            $(el).find("a").after(' | <a style="font-size: 80%; color: orange;" href="http://book.ucdrs.superlib.net/search?sw=' + bookname + '&bCon=&ecode=utf-8&channel=search&Field=1" target="_blank">参考联盟</a>');
        });
    } else if (pageurl.includes("/works")) {
        $("div.bkdesc > a.pl2").each((i, el) => {
            let bookname = slim($(el).text());
            $(el).after(' | <a style="font-size: 80%; color: orange;" href="http://book.ucdrs.superlib.net/search?sw=' + bookname + '&bCon=&ecode=utf-8&channel=search&Field=1" target="_blank">参考联盟</a>');
        });
    } else if (pageurl.includes("/cart")) {
        $("td.book_title > a").each((i, el) => {
            let bookname = slim($(el).text());
            $(el).after(' | <a style="font-size: 80%; color: orange;" href="http://book.ucdrs.superlib.net/search?sw=' + bookname + '&bCon=&ecode=utf-8&channel=search&Field=1" target="_blank">参</a>');
        });
    } else if (pageurl.includes("/doulist")) {
        $("div.title > a").each((i, el) => {
            let bookname = slim($(el).text());
            let $src = slim($(el).parent().prev().prev().text());
            if ($src == "来自:豆瓣读书") {
                $(el).after(' | <a style="font-size: 80%; color: orange;" href="http://book.ucdrs.superlib.net/search?sw=' + bookname + '&bCon=&ecode=utf-8&channel=search&Field=1" target="_blank">参考联盟</a>');
            }
        });
    } else if (pageurl.match("/(series|tag|do|wish|collect)")) {
        $("div.info > h2 > a").each((i, el) => {
            let bookname = slim($(el).text());
            $(el).after(' | <a style="font-size: 80%; color: orange;" href="http://book.ucdrs.superlib.net/search?sw=' + bookname + '&bCon=&ecode=utf-8&channel=search&Field=1" target="_blank">参考联盟</a>');
        });
    } else if (pageurl.includes("/author")) {
        $("h6 > a").each((i, el) => {
            let bookname = slim($(el).text());
            $(el).after(' | <a style="font-size: 80%; color: orange;" href="http://book.ucdrs.superlib.net/search?sw=' + bookname + '&bCon=&ecode=utf-8&channel=search&Field=1" target="_blank">参考联盟</a>');
        });
    } else if (pageurl.includes("/subject")) {
        let json = $("script[type='application/ld+json']").text();
        let st = json.match(/"name" : "(.*?)",/)[1];
        let m = json.match(/"isbn" : "(.*?)",/);
        if (m) {
            st = m[1];
            $("div#mainpic > a.nbg").after('<br><a href="http://book.ucdrs.superlib.net/search?sw=' + st + '&bCon=&ecode=utf-8&channel=search&Field=All" target="_blank">参考联盟</a>');
        }
        else {
            $("div#mainpic > a.nbg").after('<br><a href="http://book.ucdrs.superlib.net/search?sw=' + st + '&bCon=&ecode=utf-8&channel=search&Field=1" target="_blank">参考联盟</a>');
        }
    } else if (pageurl.includes("book.ucdrs.superlib.net/search")) {
        $('td[id="b_img"]').each((i, el) => {
            let bookid = $(el).parent("tr").find('input[name*="ssid"]').val();
            let bookname = $(el).parent("tr").find('input[name*="title"]').val().replaceAll(/<.*?>/g, "");
            if (bookname) {
                $(el).parent().children().last().find("a").after(' | <a href="https://search.douban.com/book/subject_search?search_text=' + bookname + '" target="_blank">豆瓣</a>');
            }
            if (bookid) {
                $(el).after(showbid(bookid, "SS号"));
            } else if ((bookid = $(el).find("a[href]").attr("href").match(/dxNumber=(\d+)/))) {
                $(el).after(showbid(bookid[1], "DX号"));
            }
        });
    } else if (pageurl.includes("/search") && $('#dxid0').val()) {
        $('div[class="divImg"]').each((i, el) => {
            let ssid = $(el).prev().val();
            let dxid = $(el).prev().prev().val();
            let bookname = $(el).parent().find('input[name*="title"]').val().replaceAll(/<.*?>/g, "");
            if (bookname) {
                $(el).next().find("dt").find("a").after(' | <a href="https://search.douban.com/book/subject_search?search_text=' + bookname + '" target="_blank" style="color: blue">豆瓣</a>');
            }
            if (ssid) {
                $(el).children().first().after(showbid(ssid, "SS号"));
            } else if (dxid) {
                $(el).children().first().after(showbid(dxid, "DX号"));
            }
        });
    } else if (pageurl.includes("/views/specific/")) {
        let m = $("script:contains(send_requestajax)").text().match(/ssn=(\d{3,})/);
        let img = $("div.tubookimg>img");
        if (m) {
            img.after(showbid(m[1], "SS号"));
        } else if ((m = pageurl.match(/dxNumber=(\d+)/))) {
            img.after(showbid(m[1], "DX号"));
        }
        let st = $("div.tutilte").text();
        let m2 = $("div.tubox").find("dl").text().match(/【ISBN号】(.*?)\n/);
        if (m2) {
            st = m2[1];
        }
        img.after('<p style="text-align: center"><a href="https://search.douban.com/book/subject_search?search_text=' + st + '" target="_blank">豆瓣</a></p>');
    } else if (pageurl.includes("bookDetail.jsp?") && $('input#dxid').val()) {
        let m = $("script:contains(send_requestlib)").text().match(/ssn=(\d{3,})/);
        let img = $("#grade1").prev();
        if (m) {
            img.after(showbid(m[1], "SS号"));
        } else if ((m = pageurl.match(/dxNumber=(\d+)/))) {
            img.after(showbid(m[1], "DX号"));
        }
        let st = $("input#dxid").prev().text();
        let m2 = $("div.card_text").find("dl").text().match(/ISBN号 :(.*?)\n/);
        if (m2) {
            st = m2[1];
        }
        img.after('<p style="text-align: center"><a href="https://search.douban.com/book/subject_search?search_text=' + st + '" target="_blank">豆瓣</a></p>');
    }
})();