Skip to content

JustCabbage/osu-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

osu!parser MIT license

A C++ library to parse osu! filetypes

Installation

git clone --recursive https://github.com/JustCabbage/osu-parser.git

Project Setup

target_include_directories(ProjectName PUBLIC osu-parser/include)

Examples:

Database Parsing

#include <osu!parser/Parser.hpp>

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

#include <osu!parser/Parser.hpp>

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

#include <osu!parser/Parser.hpp>

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

About

C++20 compatible parser for osu! filetypes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published