Greasy Fork

来自缓存

EDUSRC-EXPORTER-为EDUSRC添加导出报告按钮

为EDUSRC添加导出报告按钮

// ==UserScript==
// @name         EDUSRC-EXPORTER-为EDUSRC添加导出报告按钮
// @namespace    https://greasyfork.org/zh-CN/scripts/481373-edusrc-exporter
// @version      1.2
// @description  为EDUSRC添加导出报告按钮
// @author       XiaO_WanG
// @match        https://src.sjtu.edu.cn/profile/post/*
// @match        https://src.sjtu.edu.cn/post/*
// @icon         https://src.sjtu.edu.cn/static/img/main.ico
// @grant        unsafeWindow
// @license      MPL
// @description  zh-cn
// ==/UserScript==

(function () {
    'use strict';
    const $w = unsafeWindow, $l = $w.location.href, $d = $w.document;
    if ($l.toLowerCase().includes("https://src.sjtu.edu.cn/post/")) {
        var rows = $('tbody tr');
        var reportBtnTh = $('<th></th>').text('操作').addClass('am-text-center');
        rows.eq(0).append(reportBtnTh);
        var exportButton = $('<a></a>').text('导出').addClass('am-btn am-btn-primary am-btn-xs');
        exportButton.on('click', function () {
            var name = rows.eq(1).find('td:nth-child(2) a').text().trim();
            var time = rows.eq(1).find('td:nth-child(1)').text().trim();
            var author = rows.eq(1).find('td:nth-child(3) a').text().trim();
            var content = $("body > div > div > div.am-container > div > div > article > div.am-article-bd").html().replace(/https:\/\/src.sjtu.edu.cn\/media\/images\//g, "/media/images/").replace(/\/media\/images\//g, "https://src.sjtu.edu.cn/media/images/");
            var blob = new Blob([content], { type: 'text/html' });
            var url = window.URL.createObjectURL(blob);
            var a = $('<a></a>').attr('href', url).attr('download', time + "-" + author + "-" + name + '.html').get(0);
            a.click();
            window.URL.revokeObjectURL(url);
        });
        var cell = $('<td></td>').addClass('am-text-center').append(exportButton);
        rows.eq(1).append(cell);
    } else {
        function down(link, name, time) {
            fetch(link)
                .then(response => response.text())
                .then(html => {
                var header = '<meta charset="utf-8">';
                var content = new DOMParser().parseFromString(html, 'text/html').querySelector("body > div > div > div.am-container > div > div > article > div.am-article-bd").innerHTML.replace(/https:\/\/src.sjtu.edu.cn\/media\/images\//g, "/media/images/").replace(/\/media\/images\//g, "https://src.sjtu.edu.cn/media/images/");
                var blob = new Blob([header + content], { type: 'text/html' });
                var url = window.URL.createObjectURL(blob);
                var a = document.createElement('a');
                a.href = url;
                a.download = time + "-" + name + '.html';
                a.click();
                window.URL.revokeObjectURL(url);
            })
                .catch(error => {
                console.error('Error fetching content:', error);
            });
        };
        var rows = $("tbody tr");
        rows.each(function(index, row) {
            if ($(row).attr('class') === undefined) {
                var exportButton = $('<a></a>').text('导出').addClass('am-btn am-btn-primary am-btn-xs');
                exportButton.on('click', function() {
                    var link = $(row).find('td:nth-child(2) a').attr('href');
                    var name = $(row).find('td:nth-child(2) a').text().trim();
                    var time = $(row).find('td:nth-child(1)').text().trim();
                    down(link, name, time);
                });
                var cell = $('<td></td>').addClass('am-text-center am-hide-sm-down');
                cell.append(exportButton);
                $(row).append(cell);
            } else {
                var exportTiele = $('<td></td>').addClass('am-hide-sm-down am-text-center').text('导出');
                $(row).append(exportTiele);
            }
        });
        var exportAll = $('<span></span>').text('导出本页所有报告').addClass('fa-search fa');
        var exportAllBtn = $('<a></a>').addClass('btn btn-primary').append(exportAll);
        exportAllBtn.on('click', function() {
            rows.each(function(index, row) {
                if ($(row).attr('class') === undefined) {
                    var link = $(row).find('td:nth-child(2) a').attr('href');
                    var name = $(row).find('td:nth-child(2) a').text().trim();
                    var time = $(row).find('td:nth-child(1)').text().trim();
                    down(link, name, time);
                }
            });
        });
        $("body > div.main-body > div > div.am-container > div > div > form > div.am-u-lg-3.am-u-md-3.am-u-sm-3.am-u-end").append(exportAllBtn);
        $("body > div.main-body > div > div.am-container > div > div > table > tbody > tr.null.am-primary > td:nth-child(3)").width("10%");
        $("body > div.main-body > div > div.am-container > div > div > table > tbody > tr.null.am-primary > td:nth-child(4)").width("10%");
        $("body > div.main-body > div > div.am-container > div > div > table > tbody > tr.null.am-primary > td:nth-child(5)").width("10%");
        $("body > div.main-body > div > div.am-container > div > div > table > tbody > tr.null.am-primary > td:nth-child(6)").width("10%");
    }
})();