Coder Social home page Coder Social logo

kabiiq / beatmapexporter Goto Github PK

View Code? Open in Web Editor NEW
85.0 3.0 6.0 478 KB

osu!lazer beatmap exporter utility. Allowing mass export of beatmaps from the new osu!lazer file storage back into .osz files.

License: MIT License

C# 99.36% Batchfile 0.64%
beatmap exporter lazer osu osz osulazer

beatmapexporter's Introduction

BeatmapExporter (for osu!lazer)

Support the Developer

ko-fi

For issues or if an update is required, you can create an issue on GitHub. Alternatively, I can be found through Discord via by my bot's support server. Though it is not for BeatmapExporter specifically, I do not mind it being used for my other utilities such as this one.

Purpose/Functionality

BeatmapExporter is a program/tool that can mass-export your osu! beatmap library from the modern osu!lazer storage format.

osu!lazer does not have a "Songs/" folder as "stable" osu! does. Lazer's files are stored under hashed filenames and other information about the beatmap is contained in a local "Realm" database on your PC.

Beatmap Export

This new storage format which osu! uses results in a better experience while playing the game. However, a result of this system is that you can not easily export all or part of your songs library for sharing or moving back to osu! stable.

This utility allows you to export beatmaps back into .osz files.

There is a beatmap filter system allowing you to select a portion of your library to only export certain maps (for example, above a certain star rating, specific artists/mappers, specific gamemodes, specific collections, etc). You can also simply export your entire library at once.

Audio Export

As of version 1.2, there is an option to export only audio files. Rather than entire beatmap archives, only .mp3 audio files will be exported.

The .mp3 files are tagged with basic artist/song information, and the background file from osu! is embedded where possible.

If a beatmap uses a non-mp3 audio format, FFmpeg is required to transcode into mp3. ffmpeg.exe (for Windows) can be placed on your system PATH or simply alongside BeatmapExporter.exe before launching BeatmapExporter.

Background Image Export

As of version 1.3.8, there is an option to export only beatmap background image files.

Graphical User Interface

As of version 2.0, I have developed a more complete GUI application for BeatmapExporter. If there are bugs with the GUI application on your system, while you should feel free to report these issues to let me know, it has been built in a way to allow the older CLI (command line) program to still be available and receive updates. The CLI should also continue to be fully functional if you prefer it or are just more comfortable using it already. When viewing releases, the original CLI versions are named BeatmapExporterCLI, while the newer GUI versions are named simply BeatmapExporter.

The GUI is likely to have more bugs on non-Windows platforms as I have not had anyone confirm if it even works on those platforms yet. Please do let me know in a GitHub issue if it is not working, but even if it is unusable the CLI version should still work for you.

All features including the format of exported files are functionally the same between the versions.

Filtering beatmaps screenshot in the GUI:

Download/Usage

Executables are available from the Releases section on GitHub.

If you are on a Windows system and your osu! database is in the default location (%appdata%\osu), you should be able to simply run the application. If you changed the database location when install osu!lazer, the program will be unable to locate it and will prompt you to enter it.

If you are not on Windows, I included default directories for OSX and Linux and it should automatically work, but it is untested on these platforms.

You can alternatively launch the program with the database folder as the launch argument if you already know it will be in an unusual location. The database folder needed contains a "files" folder. This folder can also be opened from in-game if you moved it and are unsure where it is located. If you did not move it, it should just automatically work.

Basic Export Task Screenshot

Exporting beatmaps with a tag with the original CLI program version:

beatmapexporter's People

Contributors

kabiiq avatar ppebb avatar yuumipie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

beatmapexporter's Issues

Export by start date/date cut?

I am using lazer client for grabbing new beatmaps, after that I may want to export the newly added beatmaps to stable.

This tool already does a good job when I want to export all beatmaps from lazer to stable,
but when I add some new beatmaps to the lazer database I may want to export only the new ones.

Is this supported currently?

Export only 1 beatmap

This is now a problem or bug, i just can't use github but i wanted to ask if i can export only one beatmap with this maybe with a gui interface somehow.

Error Opening Database

image

Windows 11 22H2, Osu-Lazer 2023.305.0 as of 3/5/2023.
I open the exe as admin and choose the right directory, but It's show as the image above multiple times of trying, is it my issues or it not work for newer version of lazer?

Support version 38

Error opening database: Provided schema version 36 does not equal last set version 38.
Update: It seems there is no difference between schemes 36 and 38.

Whether this work on Flatpak

I'm not sure whether this is gonna actually work from flatpak version, but i tried on its directory and it didnt really work

may i have confirmation if it actually works on flatpak or you maybe havent try it

Beatmaps exported into zips cannot be imported back into osu!lazer

The exporting process seems to complete without errors, but when I'm trying to import the exported beatmaps back into osu!lazer, I'm getting the error message "Beatmap import failed!".
image
This happens when I unzip the file and try to import the songs individually in osu!lazer. If I try to open the whole zip file in osu!lazer, I get the "unexpected error occured" message instead.
There seem to be no issue importing beatmaps that were not exported as a zip file.

Exits with Unhandled exception. Realms.Exceptions.RealmException: Provided schema version 14 is less than last set version 16.

Description
OS: Windows 10 21H2 19044.1826
osu! Lazer version: 2022.716.1

Steps to reproduce

My osu!Lazer's directory is at C:\Users\Ava\AppData\Roaming\osu

  1. Download binary from releases page

https://github.com/kabiiQ/BeatmapExporter/releases/download/v1.2.1/BeatmapExporter.exe

  1. Run the executable file

Issue persists even when running as administrator just in case.

  1. See command prompt
  2. See error
--- kabii's Lazer Exporter ---

Checking directory: C:\Users\Ava\AppData\Roaming\osu
Run this application with your osu!lazer storage directory as an argument if this is not your osu! data location.
Unhandled exception. Realms.Exceptions.RealmException: Provided schema version 14 is less than last set version 16.
   at Realms.NativeException.ThrowIfNecessary(Func`2 overrider)
   at Realms.SharedRealmHandle.Open(Configuration configuration, RealmSchema schema, Byte[] encryptionKey)
   at Realms.RealmConfiguration.CreateHandle(RealmSchema schema)
   at Realms.RealmConfigurationBase.CreateRealm()
   at Realms.Realm.GetInstance(RealmConfigurationBase config)
   at BeatmapExporter.Exporters.Lazer.LazerDB.LazerDatabase.Open()
   at BeatmapExporter.Exporters.Lazer.LazerLoader.Load(String directory)
   at BeatmapExporter.ExporterLoader.Main(String[] args)
   at BeatmapExporter.ExporterLoader.<Main>(String[] args)

Avalonia dependency version leading to errors in GUI project

Setting the version of the Avalonia dependencies to "$(AvaloniaVersion)" leads to the dependency being set to the earliest version (0.4.0). The version is incompatible with the GUI project. One possible solution is to have it explicitly set to a compatible version.

<ItemGroup>
<PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.0" />
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)" />
</ItemGroup>

Collection export

ability to export collections over to normal osu via collection.db change, just an idea ^^

Can't export beatmaps on Linux

Error opening database: Provided schema version 36 does not equal last set version 32.
The osu!lazer database structure has updated since the last BeatmapExporter update.

Versions:

OSU: 2023-1130.0-lazer

BeatMapExporter: 1.3.6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.