Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/justcabbage/osu-parser

C++20 Library to parse osu! filetypes
https://github.com/justcabbage/osu-parser

cpp osu osu-libraries osugame parser parsing

Last synced: about 1 month ago
JSON representation

C++20 Library to parse osu! filetypes

Awesome Lists containing this project

README

        

# osu!parser [![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)

### A C++ library to parse osu! filetypes

# Installation
```
git clone --recursive https://github.com/JustCabbage/osu-parser.git
```
## Project Setup
```CMake
target_include_directories(ProjectName PUBLIC osu-parser/include)
```
# Examples:

## Database Parsing
```c++
#include

int main()
{
const std::string GamePath = std::string(getenv("localappdata")) + "\\osu!\\";

Parser::Database ParsedDatabase(GamePath + "osu!.db");

for(const auto& Beatmap : ParsedDatabase.Beatmaps)
{
std::cout << Beatmap.BeatmapHash << "\n";
}
}
```

## Beatmap Parsing
```c++
#include

int main()
{
const std::string SongsPath = std::string(getenv("localappdata")) + "\\osu!\\Songs\\RandomBeatmap\\Beatmap.osu";

Parser::Beatmap ParsedBeatmap(SongsPath);

std::cout << "Audio Filename - " << ParsedBeatmap.General.AudioFilename << "\n";
std::cout << "Total Hit Objects - " << ParsedBeatmap.HitObjects.size() << "\n";
std::cout << "Total Timing Points - " << ParsedBeatmap.TimingPoints.size() << "\n";
}
```

## Replay Parsing
```c++
#include

int main()
{
const std::string ReplayPath = std::string(std::getenv("localappdata")) + "\\osu!\\Replays\\MyReplay.osr";

Parser::Replay ParsedReplay(ReplayPath);

std::cout << "Parsed " << ParsedReplay.Actions.size() << " Replay Actions\n";
std::cout << "Replay Score - " << ParsedReplay.Score << "\n";
}
```

# Credits
- [osu!wiki](https://github.com/ppy/osu/wiki/)
- [pocketlzma](https://github.com/SSBMTonberry/pocketlzma)