3 releases
Uses new Rust 2024
new 0.1.2 | Mar 13, 2025 |
---|---|
0.1.1 | Mar 12, 2025 |
0.1.0 | Mar 12, 2025 |
#6 in #osu
85 downloads per month
Used in osynic_serializer
53KB
1.5K
SLoC
OsynicOsudb
Osynic的osu!db解析部分,基于osu-db重构
📄 简介
Osynic的osu!db解析部分,基于osu-db重构,主要做了读写分离并改了实体结构,最近把解析部分升级到了nom8,并解决了osu!.db在20250107版本的变更
🌐 相关项目
osynic_serializer 是一款高效的osu!谱面序列化工具,基于osynic_osudb开发,支持FOLDER、OSUDB两种序列化算法;搭配osynic_downloader使用可实现osu!谱面的快速序列化与多设备谱面同步。
📦 实体结构
- entity
- osu
- osudb
- beatmaps
- fields
- grade
- mode
- modification
- rank
- star
- time
- collection
- collection
- collectiondb
- scores
- scores
- scoresdb
- fields
- action
- button
- replay
- osu
📦 安装
在你的Cargo.toml
文件中添加以下依赖:
[dependencies]
osynic_osudb = "0.1.0"
📖 使用
use osynic_osudb::prelude::OsuDB;
fn main() {
// 将osu!.db文件解析为OsuDB结构体
let mut osudb = OsuDB::from_file("osu!.db").unwrap();
// 打印前三个谱面的信息
for (index, beatmap) in osudb.beatmaps.iter_mut().take(3).enumerate() {
println!(
"Song {}: {} - {}",
index + 1,
beatmap.artist_unicode.as_ref().unwrap(),
beatmap.title_unicode.as_ref().unwrap()
);
println!("Creator: {}", beatmap.creator.as_ref().unwrap());
println!("Difficulty: {}", beatmap.difficulty_name.as_ref().unwrap());
println!("Audio: {}", beatmap.audio.as_ref().unwrap());
println!("Hash: {}", beatmap.hash.as_ref().unwrap());
println!("File Name: {}", beatmap.file_name.as_ref().unwrap());
println!("Status: {:?}", beatmap.status);
println!("Hitcircle Count: {}", beatmap.hitcircle_count);
println!("Slider Count: {}", beatmap.slider_count);
println!("Spinner Count: {}", beatmap.spinner_count);
println!("Last Modified: {}", beatmap.last_modified);
println!("Approach Rate: {}", beatmap.approach_rate);
println!("Circle Size: {}", beatmap.circle_size);
println!("HP Drain: {}", beatmap.hp_drain);
println!("Overall Difficulty: {}", beatmap.overall_difficulty);
println!("---------------------------------");
}
}
❤️ 鸣谢
本项目的主要实现来源于osu-db
这个crate,如果要说我做了什么的话,主要就在项目结构按照自己个人偏好进行的调整了
osynic_osudb是基于osu-db重构的,主要做了读写分离并改了实体结构,最近把解析部分升级到了nom8,并解决了osu!.db在20250107版本的变更
osu-db
基于 Unlicense 开源协议,尽管如此,我们也将其项目证书放在了licenses文件夹下
🤝 贡献指南
这个库基本上保留了osu-db
的所有功能,但是我的业务需求只需要使用其中的OsuDB解析部分,其他部分是否好使我并没有测试过
所以,如果代码有任何问题,或者你有任何建议,欢迎提交PR或者Issue,我会尽快处理~
如果你想贡献代码,请遵循以下规则:
- 遵循Rust官方编码规范
- 新增功能需附带测试用例
- 提交前运行
cargo fmt
和cargo clippy
📜 开源协议
本项目基于 MIT License 开源,请尊重原作者的著作权。
Dependencies
~2–3MB
~61K SLoC