15 个版本

0.6.0 2023年7月8日
0.5.0 2021年1月19日
0.4.0 2020年11月27日
0.2.2 2020年6月16日
0.1.3 2020年3月29日

#2194 in 网页编程

MIT 许可证

125KB
3K SLoC

crates.io docs

rosu

rosu 是 osu!api v1 的 Rust 封装器。

该封装器提供了对 beatmap、用户、得分、用户最佳、用户最近和比赛端点的访问。

注意: 仅支持 osu!api v1。如果您想使用 v2,请查看 rosu-v2

可以在 这里 生成 API 密钥。

示例

use rosu::{
    model::*,
    Osu, OsuResult,
};
use time::OffsetDateTime;

#[tokio::main]
async fn main() -> OsuResult<()> {
    // Initialize the client
    let osu = Osu::new("osu_api_key");

    // --- Retrieving top scores ---
    let mut scores = osu.top_scores("Badewanne3")
        .mode(GameMode::Mania)
        .limit(4)
        .await?;
    match scores.pop() {
        Some(score) => {
            // Retrieve user of the score
            let user = score.get_user(&osu).mode(GameMode::Osu).await?;
            // ...
        }
        None => println!("No top scores found"),
    }

    // --- Retrieving beatmaps ---
    let mut maps = osu.beatmaps()
        .mode(GameMode::Mania)
        .limit(3)
        .since(OffsetDateTime::from_unix_timestamp(1542150088).unwrap())
        .mapset_id(945496)
        .await?;
    if let Some(map) = maps.pop() {
        let leaderboard: Vec<Score> = map
            .get_global_leaderboard(&osu)
            .limit(13)
            .await?;
        // ...
    }
    // --- Retrieving user ---
    let user: Option<User> = osu.user("Badewanne3").await?;
    // ...

    // --- Retrieving match ---
    let osu_match: Match = osu.osu_match(58494587).await?;
    // ...

    Ok(())
}

功能

标志 描述 deps
serialize model 模块中的所有类型提供序列化 serde-repr
metrics 使客户端对每种请求类型进行计数,并启用客户端上的方法以获取 prometheus::IntCounterVec prometheus

依赖项

~6–19MB
~297K SLoC