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 网页编程
125KB
3K SLoC
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