您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
将你的超星学习通里的作业数据、随堂练习导出成为 Csv 文件,方便导入 Anki 背题
当前为
- // ==UserScript==
- // @name 超星 To Csv
- // @version 0.1.0
- // @description 将你的超星学习通里的作业数据、随堂练习导出成为 Csv 文件,方便导入 Anki 背题
- // @author Nexmoe
- // @namespace https://nexmoe.com/
- // @match *://*.chaoxing.com/*
- // @grant GM_setValue
- // @grant GM_getValue
- // @license MIT
- // ==/UserScript==
- // 在此处键入代码……
- let css = () => {
- let style = document.createElement("style");
- style.type = "text/css";
- let text = document.createTextNode("textarea { border: 1px solid; width: 100%; resize: none;}");
- style.appendChild(text);
- let head = document.getElementsByTagName("head")[0];
- head.appendChild(style);
- }
- let generateTextArea = (data) => {
- let node = document.createElement("textarea");
- let textnode = document.createTextNode(data);
- node.appendChild(textnode);
- if (document.getElementsByClassName("detailsHead").length > 0) {
- document.getElementsByClassName("detailsHead")[0].appendChild(node);
- } else {
- document.getElementsByClassName("top-box")[0].appendChild(node);
- }
- }
- function ConvertToCSV(objArray) {
- var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
- var str = '';
- for (var i = 0; i < array.length; i++) {
- var line = '';
- for (var index in array[i]) {
- if (line != '') line += ','
- line += array[i][index];
- }
- str += line + '\r\n';
- }
- return str;
- }
- let saveFile = (data) => {
- const blob = new Blob([data], { type: 'text/csv;charset=utf-8;' });
- const Url = URL.createObjectURL(blob);
- let link = document.createElement('a');
- link.download = `data.csv`; //文件名字
- link.href = Url;
- link.appendChild(document.createTextNode('下载题目数据'));
- if (document.getElementsByClassName("detailsHead").length > 0) {
- document.getElementsByClassName("detailsHead")[0].appendChild(link);
- } else {
- document.getElementsByClassName("top-box")[0].appendChild(link);
- }
- }
- let getData = (i, data = []) => {
- let questions, selections, answers;
- if (document.getElementsByClassName("mark_name").length > 0) {
- questions = document.getElementsByClassName("mark_name");
- selections = document.getElementsByClassName("mark_letter");
- answers = document.getElementsByClassName("colorGreen");
- } else {
- questions = document.getElementsByClassName("topic-title");
- selections = document.getElementsByClassName("topic-options");
- answers = document.getElementsByClassName("color-green");
- }
- for (i = 0; i < questions.length; i++) {
- data.push({
- question: questions[i].innerText.replace(
- new RegExp(",", "gm"),
- ","
- ).replace(
- new RegExp("\n", "gm"),
- ""
- ),
- selection: selections[i].innerText.replace(
- new RegExp("\n", "gm"),
- "***"
- ).replace(
- new RegExp(",", "gm"),
- ","
- ),
- answer: answers[i].innerText.replace("正确答案: ", "").replace(
- new RegExp(",", "gm"),
- ","
- ).replace(
- new RegExp("对", "gm"),
- "A"
- ).replace(
- new RegExp("错", "gm"),
- "B"
- )
- })
- }
- console.log(data)
- return data;
- }
- (function () {
- 'use strict';
- css();
- if (document.getElementsByClassName("mark_name").length > 0) {
- generateTextArea(JSON.stringify(getData()));
- saveFile(ConvertToCSV(JSON.stringify(getData())));
- } else {
- setTimeout(() => {
- generateTextArea(JSON.stringify(getData()));
- saveFile(ConvertToCSV(JSON.stringify(getData())));
- }, 1000)
- }
- })();