Skip to content

tan-ty/nju-schedule-ics

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

南哪另一课表

把南京大学课程表转换为可以订阅的日历链接,方便自动更新、多端同步。

此外,系统日历app通常具有很好的整合,比如桌面小组件、锁屏小组件、语音助手整合、手表同步等功能。

亮点

  • 一次登陆,自动更新。 后面再退补选都不需要重新登陆/重新导入,等你的日历app自动更新或者手动刷新一下即可看到新的课表。到了下一学期时,也不需要重新登陆/导入。
  • 一个链接,处处使用。 你可以在自己的任何设备上使用同一个订阅链接,最新的课表便会同步到各个设备上。你也可以把链接分享给朋友,告诉ta上课的时候别来烦我!
  • 跨平台兼容。 iCalendar格式是个通用的标准,南哪课表不再局限于手机。电脑、平板、手表,甚至电视、机顶盒都可以看课程表啦~iOS/Android可用,Windows/macOS/Linux也可用,且即将到来的鸿蒙next很可能也可以用(虽然我没试过)
  • 更好的系统整合。 此处的日历订阅通常导入到系统自带的日历,而系统自带的日历对系统里各种功能的支持肯定是特别完善的。比如桌面小组件、锁屏小组件、语音助手等功能都能安排上。
  • 地图导航。 看到了教室名字却不知道在哪里?没关系,日程中带上了地图!只要点一下即可跳转到导航app,手把手带你前往教室!(目前只支持苹果系统,只支持仙林校区)
图片 图片 图片 图片

登陆界面:

Login

使用提供的服务器

这里

隐私与数据安全

此项目用于搭建一个服务器(以下称为“本服务器"),该服务器会将南大的课程表转换为iCalendar日历格式。为了从南大的服务器获取课程表,本服务器需要拿到你的统一认证用户名和密码以登陆。

我们不会存储你提交的用户名、密码,但会存储登陆过程中产生的cookie以确保后续更新。该cookie对你帐号的操作权限约等于密码,拿到了cookie就等同于登陆后的状态。

日历的订阅链接不会包含除了课表外的任何其他隐私信息。

我们无意偷盗你的帐号,也尽力编写保护隐私的代码。但就像任何程序一样,我们无法保证没有bug。此外,作为一个开源软件,它不提供任何担保,使用过程中的任何风险由用户自行承担。

自建服务器

  1. 可以直接运行nix flake:
nix run github:SuperKenVery/nju-schedule-ics -- --config config.toml

如果指定的文件不存在则会生成默认的配置文件并退出。

  1. 也可以使用docker部署:
nix build github:SuperKenVery/nju-schedule-ics#docker
docker load -i ./result # You will get a tag here
touch config.toml # Without this docker would create a directory
docker run -p 8899:8899 -v ./config.toml:/config.toml nju-schedule-ics:<use the previous tag>
  1. 也可以从源码编译并运行:
cargo run -- --config config.toml

如果使用nix构建,可以添加nix cache来避免编译,直接下载二进制:

cachix use superkenvery

目前GitHub Actions会生成x86_64-linuxx86_64-darwin的cache,我有时会推送 aarch64-darwinaarch64-linux的cache。

配置文件

# The path to SQLite database
# which stores cookies
db_path="./cookies.sqlite"

# The URL this site is hosted
# No trailing slash
# Must start with https://
site_url="https://example.com/sub_dir"

# Listen address&port
# This is different from site_url, as you'll probably
# use a reverse proxy in front of this.
listen_addr="0.0.0.0:8899"

项目架构

html:静态网页资源

nju:对接南京大学服务器

schedule:把南大服务器返回的数据转换为ics文件

server:服务端

更多内容可见 mod.rs的注释

About

南京大学课表,基于日历ics订阅

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 77.0%
  • Rust 20.1%
  • HTML 1.1%
  • Nix 1.1%
  • Other 0.7%