您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
ha ha ha ha ha ha ha ha ha ha ha !
// ==UserScript== // @name PeopleSoft Export // @namespace peoplesoft_export // @match *://scrsprd.zju.edu.cn/* // @version 0.0.1 // @license MIT // @description ha ha ha ha ha ha ha ha ha ha ha ! // @author NaN // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.6.2/jquery.slim.min.js // ==/UserScript== (function () { 'use strict'; function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } // Your code here... var until = '20230524T000000'; // yyyymmdd hhmmss var first_Sunday = new Date('2023-2-12'); function getCourseTime(week, timeInfo) { // alert(timeInfo); let thatDay = new Date(first_Sunday.getTime() + 86400000 * week); var year = String(thatDay.getFullYear()); var month = String(thatDay.getMonth() + 1).padStart(2, 0); var date = String(thatDay.getDate()).padStart(2, 0); var times = /(\d+):(\d+)([上下])午/.exec(timeInfo).slice(1); if (times[2] == '下') times[0] = String(Number(times[0]) + 12); times[0] = times[0].padStart(2, 0); return `${year}${month}${date}T${times[0]}${times[1]}00`; }; var btn = $('<span>导出日程表</span>'); $('div#win0divPAGEBAR').after(btn); btn.click(() => { var maxTime = Array(8); var startTime = Array(8); var ics = ''; console.clear(); $('.SSSTEXTWEEKLY').each((index, ele) => { let content = $(ele).html().split('<br>'); let info = content.slice(0, 5); let staff = content.slice(5); let from_to = info[3].split(' - '); let days = $(ele).parent().index(); // console.log($(ele).siblings()); // return; if(!$(ele).parent().siblings().hasClass('SSSWEEKLYTIMEBACKGROUND')) days++; let from = getCourseTime(1, from_to[0]).slice(-6); let to = getCourseTime(1, from_to[1]).slice(-6); console.log(content[0], '-------------------\n', days); let week = 1; while(days){ if(maxTime[week] == undefined || maxTime[week] <= from || startTime[week] >= from) days--, console.log('fill', week, ':', maxTime[week], startTime[week]); week++; } week--; from = getCourseTime(week, from_to[0]); to = getCourseTime(week, from_to[1]); // do{ // week++; // // alert($(ele).siblings()); // from = getCourseTime(week, from_to[0]); // to = getCourseTime(week, from_to[1]); // } while(maxTime[week] != undefined && maxTime[week] > from) maxTime[week] = to.slice(-6); startTime[week] = from.slice(-6); console.log(content[0], '====================\n', week); ics += ` BEGIN:VEVENT SUMMARY:${info.slice(0, 3).join('\\n')} DTSTART:${getCourseTime(week, from_to[0])} DTEND:${getCourseTime(week, from_to[1])} RRULE:FREQ=WEEKLY;UNTIL=${until} UID:course${index} DESCRIPTION:${staff.join('\\n')} LOCATION:${info[4]} END:VEVENT `; // console.log(info, staff); }); ics = `BEGIN:VCALENDAR PRODID:-//PeopleSoftExport//CN VERSION:2.0 CALSCALE:GREGORIAN METHOD:PUBLISH X-WR-CALNAME:My School Timetable X-WR-TIMEZONE:Asia/Shanghai` + ics + `END:VCALENDAR #日历结束`; console.log(ics); download('shedule.ics', ics); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址