9个不稳定版本 (3个破坏性更新)
0.9.1 | 2023年12月4日 |
---|---|
0.9.0 | 2023年9月13日 |
0.8.0 | 2023年8月8日 |
0.7.4 | 2023年3月31日 |
0.6.1 | 2022年11月9日 |
#309 in Web编程
每月74次下载
370KB
3K SLoC
webweg | webreg_scraper | UCSDHistEnrollmentData
UCSD(加州大学圣地亚哥分校)WebReg课程报名系统的异步API包装器。
用法
要使用此包,请运行以下命令
cargo add webweg
或者,您也可以将以下行放入您的 Cargo.toml
webweg = { version = "0.9", features = ["multi"] }
有关更多信息,请参阅相应的 crates.io 页面。
包装器功能
您可以在WebReg上完成的许多操作都可以使用此包装器完成。例如,您可以
- 获取季度中所有可能的课程。
- 根据某些条件搜索课程(即高级搜索)。
- 获取特定课程的详细信息(例如,已报名学生人数,讲师等)
- 获取您当前的课程表。
您还可以执行以下操作
- 更改评分选项。
- 报名或取消报名课程。
- 计划或取消计划课程。
- 加入或取消等待名单。
- 创建、删除或重命名您的课程表。
- 向您自己发送确认电子邮件。
要查看一些示例,请查看 examples
文件夹。
多线程
默认情况下,包装器会假设它在一个线程或任务中使用。因此,如果您想要在多个线程或任务之间共享包装器的实例,您必须使用 Mutex
。使用 Mutex
的问题是,如果请求耗时较长(这并不罕见),则整个包装器会锁定,直到请求完成,这意味着使用此包装器实例的其他线程必须等待。
通过启用 multi
功能,包装器可以在多个线程或任务中 无需 使用 Mutex
使用。
要添加具有 multi
功能的此包,您可以选择以下任一操作:
cargo add webweg --features multi
或
webweg = { version = "0.9", features = ["multi"] }
将其放入您的 Cargo.toml
中。
身份验证
点击此处
为此包装器提供授权的方式是提供活动WebReg会话的cookie(即您的身份验证cookie)。
要获取您的身份验证cookie,您需要进行以下操作
- 登录WebReg。
- 在WebReg主菜单中选择一个学期。
- 打开开发者工具(使用谷歌浏览器,点击三个点,选择“更多工具”,然后“开发者工具。”)
- 转到开发者工具的“网络”标签页。然后,您可以
- 通过文本
https://act.ucsd.edu/webreg2/svc/wradapter
过滤 - 或者,通过
Fetch/XHR
过滤。
- 通过文本
- 在WebReg上发起某种请求(例如,搜索课程)。
- 查找WebReg发起的请求。
- 在请求头下,复制cookie。
请注意,您的cookie将在以下任一情况下失效:
- 10分钟的无操作(即,您在10分钟内没有发出使用cookie的请求),或者
- 当WebReg进入维护模式时;这通常在太平洋时间每天凌晨4:15左右发生。
因此,如果您想执行连续请求,您需要找到一种方法来保持24/7登录到WebReg。
定义文件
这个包包含两个定义文件
raw_types
types
大多数包装方法将使用可在 types
中找到的返回类型。您很少需要使用 raw_types
;唯一需要使用 raw_types
的情况是您正在使用 search_courses
方法。
测试
这里的许多测试都关注包装的 解析 方面,而不是本身发出请求。假设发出请求应该是相对无错误的。
版本控制
此包使用一种基于 语义版本控制 的版本控制方案。对于一个版本
MAJOR.MINOR.PATCH
- 当添加了非常重大的功能、或者 许多 不向后兼容的更改、或者 添加了(一个或多个)重大的不向后兼容更改时,将增加
MAJOR
版本。 - 当添加了次要功能、或者 少量(如果有的话)的次要不向后兼容更改时,将增加
MINOR
版本。 - 当添加了次要增强/功能或修复了错误时,将增加
PATCH
版本。
免责声明
我对因使用此包装引起的任何损害或其他问题不承担责任。换句话说,通过使用此包装,我对您可能遇到麻烦或其他问题不承担责任。
许可证
此存储库中的所有内容均受MIT许可证的许可。
依赖关系
~3–16MB
~236K SLoC