EDUSRC-EXPORTER

为EDUSRC添加导出报告按钮

目前为 2023-12-04 提交的版本。查看 最新版本

// ==UserScript==
// @name         EDUSRC-EXPORTER
// @namespace    http://tampermonkey.net/
// @version      1.0
// @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 table = document.querySelector('tbody');
        var rows = table.querySelectorAll('tr');

        var reportBtnTh = document.createElement('th');
        reportBtnTh.textContent = '操作';
        reportBtnTh.classList.add('am-text-center');
        rows[0].appendChild(reportBtnTh);

        var exportButton = document.createElement('a');
        exportButton.textContent = '导出';
        exportButton.classList.add('am-btn', 'am-btn-primary', 'am-btn-xs');

        exportButton.addEventListener('click', function () {
            var name = rows[1].querySelector('td:nth-child(2) a').text.trim();
            var time = rows[1].querySelector('td:nth-child(1)').innerText.trim();
            var author = rows[1].querySelector('td:nth-child(3) a').text.trim();

            var content = document.querySelector("body > div > div > div.am-container > div > div > article > div.am-article-bd").innerHTML.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 = document.createElement('a');
            a.href = url;
            a.download = time + "-" + author + "-" + name + '.html';
            a.click();
            window.URL.revokeObjectURL(url);
        });

        var cell = document.createElement('td');
        cell.classList.add('am-text-center');
        cell.appendChild(exportButton);

        rows[1].appendChild(cell);
        //报告页面的导出按钮
    } else { // 报告列表
        function down(link, name, time) {
            fetch(link)
                .then(response => response.text())
                .then(html => {
                    var content = new DOMParser().parseFromString(html, 'text/html').querySelector("body > div > div > div.am-container > div > div > article > div.am-article-bd").innerHTML.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 = 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 table = document.querySelector('tbody');
        var rows = table.querySelectorAll('tr');

        rows.forEach(function (row) {
            if (row.className === '') { // 每行表格添加导出按钮
                var exportButton = document.createElement('a');
                exportButton.textContent = '导出';
                exportButton.classList.add('am-btn', 'am-btn-primary', 'am-btn-xs');

                exportButton.addEventListener('click', function () { // 按钮点击事件-导出
                    var link = row.querySelector('td:nth-child(2) a').getAttribute('href');
                    var name = row.querySelector('td:nth-child(2) a').text.trim();
                    var time = row.querySelector('td:nth-child(1)').innerText.trim();

                    down(link, name, time);
                });

                var cell = document.createElement('td');
                cell.classList.add('am-text-center', 'am-hide-sm-down');
                cell.appendChild(exportButton);
                row.appendChild(cell);
            } else { // 表头添加一个-导出
                var exportTiele = document.createElement('td');
                exportTiele.classList.add('am-hide-sm-down', 'am-text-center');
                exportTiele.textContent = '导出';
                row.appendChild(exportTiele);
            }
        });




        // 导出所有报告
        var exportAll = document.createElement('span');
        exportAll.textContent = '导出本页所有报告';
        exportAll.classList.add('fa-search', 'fa');

        var exportAllBtn = document.createElement('a');
        exportAllBtn.classList.add('btn', 'btn-primary');
        exportAllBtn.appendChild(exportAll);

        exportAllBtn.addEventListener('click', function () { // 点击按钮事件-导出所有
            rows.forEach(function (row) {
                if (row.className === '') {
                    var link = row.querySelector('td:nth-child(2) a').getAttribute('href');
                    var name = row.querySelector('td:nth-child(2) a').text.trim();
                    var time = row.querySelector('td:nth-child(1)').innerText.trim();

                    down(link, name, time);
                }
            });
        });

        document.querySelector("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").appendChild(exportAllBtn);
        // 导出所有报告


        // 调整样式
        document.querySelector("body > div.main-body > div > div.am-container > div > div > table > tbody > tr.null.am-primary > td:nth-child(3)").width = "10%"
        document.querySelector("body > div.main-body > div > div.am-container > div > div > table > tbody > tr.null.am-primary > td:nth-child(4)").width = "10%"
        document.querySelector("body > div.main-body > div > div.am-container > div > div > table > tbody > tr.null.am-primary > td:nth-child(5)").width = "10%"
        document.querySelector("body > div.main-body > div > div.am-container > div > div > table > tbody > tr.null.am-primary > td:nth-child(6)").width = "10%"
        // 调整样式
    }

})();

QingJ © 2025

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