#class #university #schedules #real-time #fetching #lib #ubs

ubs-lib

一个用于获取布法罗大学实时课程表的库

2 个版本

0.1.1 2023 年 8 月 5 日
0.1.0 2023 年 8 月 5 日

#6 in #schedules


用于 ubs

MIT 许可证

43KB
754

ubs

布法罗大学课程表

test docs crates discord

ubs 是一个旨在提供布法罗大学课程表实时访问的库,为每个课程提供大量信息。这包括:class open/closedstart/end datestart/end timeclass typeclass idsectionroominstructorseats open/closed,等等。

安装

Cargo

$ cargo install ubs

示例

以下是一个使用 tokio 和高级 API 获取实时课程信息的代码片段。

use futures::stream::TryStreamExt;
use ubs_lib::{Career, Course, Semester};

#[tokio::main]
async fn main() -> Result<(), ubs_lib::Error> {
    let mut schedule_iter = ubs_lib::schedule_iter(
        Course::Cse115,
        Semester::Spring2023,
    ).await?;

    while let Some(schedule) = schedule_iter.try_next().await? {
        for group in schedule?.group_iter() {
            for class in group.class_iter() {
                // do stuff
            }
        }
    }

    Ok(())
}

常见问题解答

它是如何工作的?

该过程涉及向目标 URL 发送一系列精心设计的网络请求。收到请求后,生成的 HTML 将被缓存,直到用户请求特定信息,此时将按照规范进行解析,并使用正则表达式提取内部值。

我能否从其他语言使用此库?

是的。虽然从其他语言直接访问核心库可能还不行(尚不支持),但库提供了一个命令行界面,可以输出所需格式的数据。

这个库的稳定性如何?

有一定的稳定性。在使用此库时,请注意,底层 API 未来可能会发生变化。因此,不建议将此库用于关键代码。然而,库有一个全面的持续集成系统,每天运行,以早期捕捉潜在问题。如果 API 发生变化且 ubs 无法正常工作,鼓励用户报告问题以便解决。

这个库是否操作私有信息?

不是,此库仅操作任何人都可轻松获取的公共信息。没有涉及专有或机密数据源。

依赖关系

~8–19MB
~264K SLoC