动漫花园批量下载_改

为动漫花园(share.dmhy.org)增加批量下载的功能

// ==UserScript==
// @name         动漫花园批量下载_改
// @namespace    https://greasyfork.org/zh-CN/scripts/502439
// @version      0.6.01
// @description  为动漫花园(share.dmhy.org)增加批量下载的功能
// @author       MD1304
// @match        *://share.dmhy.org/*
// @icon         data:image/x-icon;base64,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
// @grant        GM_setClipboard
// @license      LGPLv3
// ==/UserScript==

(function() {
    //调整表格列
    var node = document.querySelector("#topic_list > thead > tr");
    node.children[2].insertAdjacentHTML('beforebegin', node.children[3].outerHTML);
    node.children[2].querySelector('[class="title"]').innerHTML = "";
    for (let i = 1; i < $('#topic_list tr').length; i++) {
        node = document.querySelector("#topic_list > tbody > tr:nth-child("+String(i)+")");
        node.getElementsByClassName("title")[0].insertAdjacentHTML('beforebegin', node.children[3].outerHTML);
        node.children[2].children[0].title ="复制链接";
        node.children[2].removeChild(node.children[2].querySelector('[class="download-pp"]'));
        if (node.children[9].children[0].innerHTML != Cut15Byte(node.children[9].children[0].innerHTML)) {
            node.children[9].children[0].title = node.children[9].children[0].innerHTML;
            node.children[9].children[0].innerHTML = Cut15Byte(node.children[9].children[0].innerHTML);
        }
    }
    //裁剪大于15字节字符串
    function Cut15Byte(str) {
        //判断字符串全是ascii /^[\x00-\x7F]+$/.test(str)
        //长度小于16的全ascii字符串或长度小于9的非全ascii不裁剪
        if ((/^[\x00-\x7F]+$/.test(str) && str.length < 17) || (!/^[\x00-\x7F]+$/.test(str) && str.length < 9)) {
            return str;
        } else {
            let length = 0;
            for (let i = 0; i < str.length; i++) {
                let charCode = str.charCodeAt(i);
                if ((charCode >= 0x0001 && charCode <= 0x007F) || (charCode >= 0x02B9 && charCode <= 0x036F)) {length += 1;} else {length += 2;}
                if (length>=16) {
                    return str.slice(0, i-1)+"...";
                } else {
                    if (i == str.length) {return str;}
                }
            }
        }
    }
    //调整表格列宽度
    document.querySelector("#topic_list > thead > tr > th:nth-child(2)").width = "4%";
    document.querySelector("#topic_list > thead > tr > th:nth-child(3)").width = "3%";
    document.querySelector("#topic_list > thead > tr > th:nth-child(5)").width = "2%";
    document.querySelector("#topic_list > thead > tr > th:nth-child(6)").width = "4%";
    document.querySelector("#topic_list > thead > tr > th:nth-child(7)").width = "2%";
    document.querySelector("#topic_list > thead > tr > th:nth-child(8)").width = "2%";
    document.querySelector("#topic_list > thead > tr > th:nth-child(9)").width = "2%";
    document.querySelector("#topic_list > thead > tr > th:nth-child(10)").width = "7%";
})();

function dmhy() {
    var that = this;
    this.init = function () {
        //复选框
        var tds = $('#topic_list tr td:nth-child(3)');
        tds.append('<input type="checkbox" class="magnet"/>');
        $('.magnet:checkbox').click(function () {
            that.strMagnet();
            console.log("已选中 "+that.gatherMagnet().length+" 项");
        });
        //复制所选
        $('.nav_title:eq(1) .fl,.nav_title:eq(2)').append('<a class="download-all" style="color:yellow;margin-left: 24px;"><i class="download-arrow arrow-magnet" style="margin-right: 4px;"title="复制所选"></i>复制所选链接至剪贴板</a>');
        $('#topic_list thead tr th:nth-child(3) span').append('<a class="download-all" style="color:yellow;"><i class="download-arrow arrow-magnet" title="复制所选">&nbsp;</i></a>');
        $('.download-all').click(function (e) {
            e.preventDefault();
            if (that.gatherMagnet().length == 0) {
                toast("未选中任何条目");
                return;
            }
            GM_setClipboard(that.strMagnet()+"\r\n");
            console.log("已复制 "+that.gatherMagnet().length+" 项");
            toast("已复制 "+that.gatherMagnet().length+" 项 选中条目链接");
        });
        //全选
        $('#topic_list thead tr th:nth-child(3) span').append('<input class="select-all" type="checkbox" style="margin-left: 3px;" title="全选"></a>');
        $('.select-all').click(function () {
            if ($('.magnet:checkbox').length !== $('.magnet:checkbox:checked').length) {
                $('.magnet:checkbox').attr('checked', true);
            } else {
                $('.magnet:checkbox').attr('checked', false);
            }
            that.strMagnet();
            console.log("已选中 "+that.gatherMagnet().length+" 项");
        });
        //复制当前
        $('td:nth-child(3) > a.download-arrow.arrow-magnet').click(function (f) {
            f.preventDefault();
            GM_setClipboard(this.getAttribute("href")+"\r\n");
            console.log("已复制 当前 项");
            toast("已复制当前条目链接");
        });
    };
    //收集磁力链接
    this.gatherMagnet = function () {
        var magnets = [];
        $('input.magnet:checkbox:checked').each(function () {
            var magnetStr = $(this).parents('tr').find('a.download-arrow.arrow-magnet').attr('href');
            magnets.push(magnetStr);
        });
        return magnets;
    };
    //格式化磁力链接字符串
    this.strMagnet = function () {
        var str = this.gatherMagnet().join('\r\n');
        $('.download-all').attr('href', str);
        return str;
    };
    //弹出提示框
    function toast(msg) {
        var toastSpan = document.createElement("span");
        toastSpan.style.top = "45%";
        toastSpan.style.left = "50%";
        toastSpan.style.color = "#fff";
        toastSpan.style.position = "fixed";
        toastSpan.style.borderRadius = "4px";
        toastSpan.style.padding = "8px 16px";
        toastSpan.style.background = "rgba(0,0,0,0.6)";
        toastSpan.style.transform = "translate(-50%, -50%)";
        toastSpan.style.transition = "opacity .3s";
        toastSpan.style.opacity = "1";
        toastSpan.innerText = msg;
        document.body.appendChild(toastSpan);
        setTimeout(function () {
            toastSpan.style.opacity = "0";
            setTimeout(function () {
                toastSpan.remove(toastSpan);
            }, 300);
        }, 1500);
    }
}
new dmhy().init();