为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%"); } })();