#class #university #schedules #real-time #buffalo #information #cli

app ubs

一个用于获取布法罗大学实时课程时间的命令行界面

3个不稳定版本

0.1.1 2023年8月5日
0.1.0 2023年8月5日
0.0.0 2022年12月1日

#4 in #university

MIT许可证

59KB
945

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无法正常工作,鼓励用户报告问题以便解决。

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

不,这个库仅操作任何人都可以轻松访问的公共信息。没有涉及专有或机密数据源。

依赖关系

~10–21MB
~275K SLoC