Skip to content

Latest commit

 

History

History
163 lines (113 loc) · 10.3 KB

README.md

File metadata and controls

163 lines (113 loc) · 10.3 KB

Warning

该项目仅适用于对计算机技术有一定了解的同学,如果你不了解Node.jsDocker技术,也没有兴趣学习,那么该项目可能不适合您。

📝 提示:该项目是一个完全非官方非商业的项目,由于本人能力有限,因此无法保证该项目的稳定性和安全性,同时,也无法提供一对一的技术支持。如果你对该项目有任何疑问或建议,可以在 Issues中提出,不过无法保证及时回复。

🤔 这是什么?

这是一个基于next.js 的课程表转日历服务程序。该项目可以帮助你将上海理工大学的课程表导入到你的日历中,并时刻保持更新。目前支持导入到Google CalendarApple CalendarOutlook Calendar 等常见互联网日历服务,也可导入至任何支持.ics文件格式或支持URL 日历订阅的手机/计算机操作系统中。该项目源自于智慧校园建设中的课程表小程序的导出至日历 功能。由于目前该功能入口已关闭,因此在此将该功能独立出来,方便大家使用。

以下是导入到Apple Calendar的效果图:

intro_01 intro_02

💡 特色

  • 🚀 快速:支持VercelDocker ComposeNode.js等多种部署方式,可快速部署,且部署门槛低。
  • 📅 自动更新:可按照设定的频率自动更新课程表,无需手动操作。
  • 🖥️ 交互界面:可一键生成日历订阅链接,无需手动复制粘贴;同时也支持手动刷新课程表缓存。
  • 🏖️ 调休支持:时刻获取最新的放假安排,支持放假和调休,可自动调整课表。
  • 📚 多学期支持:支持多学期课程表,可手动切换学期,也可根据日期自动选择当前学期。
  • 📱 多平台支持.ics文件格式支持在绝大多数操作系统中导入。
  • 提醒功能:可按照设定的时间提前提醒上课,避免错过课程。
  • ...

🚀 快速上手

Vercel (推荐,无需服务器,免费)

由于国内网络环境,部分地区可能无法访问Vercel 免费提供的域名,若您有自己的域名,可以根据官方文档(英文) 进行配置。当然,您也可以选择使用Docker-compose部署。

1、由于该项目需要配合Redis使用,因此您需要先拥有一个Redis服务。此处推荐使用RedisLabs 提供的免费服务,虽然只有30兆空间,但是已经足够使用了。注册后,您可以在RedisLabs的控制台中找到您的Redis服务的URL密码,如下图所示:

intro_01 intro_02

按照上图提供的信息,拼接出REDIS_URL,格式如下:

redis://default:<password>@<Public endpoint>

若您在注册中遇到困难,可以参考这篇文章(英文)

2、点击下方按钮,使用GitHub账号登录Vercel ,并按照提示完成部署。部署过程中会要求输入环境变量,具体填写方式参照环境变量一节。

Deploy with Vercel

3、等待部署完成,您可以在Vercel的控制台中找到您的项目的域名(Domain),如下图所示:

intro_01

PS:您也可以自定义您的项目的域名,具体操作参照官方文档(英文)

4、Enjoy it! 🎉

Docker-compose (部署便捷,需要服务器)

以下教程默认您已经安装好了DockerDocker-compose ,若您还未安装,可以参考这篇文章(中文)官方教程(英文)进行安装。

1、Clone 该项目到您的服务器上

git clone https://github.com/vvbbnn00/USST-Lecture-Table-Calendar.git

2、进入项目目录,编辑docker.env文件配置基础设置,并创建docker.env.local文件配置机密设置。具体参照环境变量一节。

3、构建并启动容器(项目将在3000端口运行,请确保该端口未被占用且已开放)

docker-compose up -d

4、Enjoy it! 🎉

Node.js (需要服务器)

以下教程默认您已经安装好了Node.jsnpm ,若您还未安装,可以参考这篇文章(中文)

1、Clone 该项目到您的服务器上

git clone https://github.com/vvbbnn00/USST-Lecture-Table-Calendar.git

2、进入项目目录,安装依赖

cd USST-Lecture-Table-Calendar
npm install

3、新建.env文件,配置docker.env中出现的所有配置。具体参照环境变量一节。

4、构建项目

npm run build

5、启动项目(项目将在3000端口运行,请确保该端口未被占用且已开放)

npm run start

6、Enjoy it! 🎉

🌏 环境变量

部分环境变量并非必填,但由于Vercel 的构建模板要求一定要填写全部环境变量,因此需要麻烦复制粘贴一下默认值。若您使用的是Docker-composeNode.js ,则可以根据您的需求选择性填写。

环境变量 是否必填 默认值 说明
REDIS_URL Redis服务的URL,格式为redis://<username>:<password>@<host>:<port>,具体参照快速上手一节
SECRET_KEY 用于保护您的课表不被泄露,请牢记该秘钥,在获取日历文件时将会用到
LOGIN_METHOD jwgl 登录方式,可选值为idsjwgl,分别对应统一身份认证系统教务管理系统(二者的密码默认是不一样的,请注意区分)
JWGL_USERNAME LOGIN_METHODjwgl则必填 教务管理系统用户名
JWGL_PASSWORD LOGIN_METHODjwgl则必填 教务管理系统密码
IDS_USERNAME LOGIN_METHODids则必填 统一身份认证系统用户名
IDS_PASSWORD LOGIN_METHODids则必填 统一身份认证系统密码
ENABLE_REMINDER true 是否启用提醒功能,可选值为truefalse。开启后将在上课前REMINDER_SECONDS秒提醒上课
REMINDER_SECONDS 900 提醒时间,单位为秒,即上课前多少秒提醒上课。默认为900,即提前10分钟提醒上课。
COURSE_TABLE_CACHE_TIME 86400 课程表缓存时间,单位为秒,即多少秒更新一次课程表。默认为86400,即每天更新一次课程表。
REDIS_PREFIX ULTC: Redis缓存的前缀,用于区分不同的项目,避免冲突。若您同时部署了多个该项目,可以修改该值。

📅 导入日历

相信能够操作到这里的你不会被导入日历这一步难住,因此这里就不再赘述了。如果您不知道如何导入日历,可以参考以下链接:

若您的手机原生不支持URL订阅日历,通常也能够通过Outlook导入后,添加Outlook账号到您的手机中,从而实现导入。

如果您还是不知道如何操作,可以先在各大搜索引擎中搜索如何导入URL订阅日历,然后再搜索<您的日历服务商> 如何导入URL订阅日历,比如华为手机 如何导入URL订阅日历,相信您一定能找到答案。

如果您经过仔细的搜索反复尝试仍然无法导入,那么您可以首先在Discussions中发帖求助网友,或在Issues中将您遇到的困难(请务必详细描述您的问题,最好附带截图)提交给我,我会尽快回复您。

由于本人能力有限,因此无法保证及时回复。在提问前,请先查看一下已解决的问题中是否有您的问题,避免重复提问,谢谢!