Table of Contents
Collection Helper is a tool you can use to manage your collections in osu!. It aims to make editing and sharing your collections quick and easy with its intuitive interface. Included is a very powerful custom filter interface which allows you to programatically filter through your beatmaps by writing your own code. The key features of Collection Helper:
|
Example making a collection with the farm filter. Note: you only have to generate cache for a filter once.
Collection editing with custom filter applied (Farm)
You must have run your osu! client at least once.
Download the latest release here
Please follow these steps to build the project yourself:
- Pull the repo
- Install dependencies in both frontend and backend (/ and /app/)
- Run "npm run electron:build" (or "npm run start" to dev)
- Run the installer found in /releases/
Custom filters work by passing you a list of beatmaps which get filtered by your code.
Any function you write must resolve with a list of beatmaps. Minimum boilerplate code is given when creating a new custom filter.
Your filter will be passed 4 objects: The resolve function, a list of beatmaps, axios for any request needs, and farmSets which is a list of osutracker.com farm sets.
If you want to use a beatmaps hit objects, you must select the Get HitObjects checkbox on the creation screen. Note: this will cause the filter to take a lot longer to cache, on my computer this is about 15 minutes for 87000 maps.
To use any custom filter in the collection edit screen, you must generate its cache first in the filters screen. This ensures the filters can be applied instantly to a list of maps instead of having to process every beatmap every time.
Beatmap anatomy:
Name | Type | Description |
---|---|---|
artist | string | |
song | string | |
creator | string | Mapper |
difficulty | string | Difficulty name |
md5 | string | Beatmap hash, unique identifier |
fileName | string | |
status | number | Bitwise status indicator. See osu! docs |
circleNumber | number | Number of circles |
sliderNumber | number | Number of sliders |
spinnerNumber | number | Number of spinner |
ar | number | Approach rate |
cs | number | Circle size |
hp | number | Health drain rate |
od | number | Overall difficulty |
sr | number | Star rating |
bpm | number | Beats per minute (most common) |
drain | number | Drain time |
timingPoints | TimingPoint[] | Bpm and slider velocity changes |
id | number | Beatmap id |
setId | number | Beatmap setId |
mode | number | 0 = osu!, 1 = taiko, 2 = ctb, 3 = mania |
songTags | string | |
unplayed | boolean | |
folderName | string | |
hitObjects | HitObject[] |
HitObject
Name | Type | Description |
---|---|---|
x | number | x position |
y | number | y position |
time | number | Time in ms |
type | number | Bitwise indicator See osu! docs |
TimingPoint
Name | Type | Description |
---|---|---|
bpm | number | See osu! docs |
offset | number | Offset in ms |
inherited | boolean |
More details from osu! documentation:
First off, thanks for taking the time to contribute! Contributions are what makes the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.
Please try to create bug reports that are:
- Reproducible. Include steps to reproduce the problem.
- Specific. Include as much detail as possible: which version, what environment, etc.
- Unique. Do not duplicate existing opened issues.
- Scoped to a Single Bug. One bug per report.
Reach out to the maintainer at one of the following places:
- Discord: basic#7373
- Twitter: @nzbasic
- osu!: YEP
- Email: jamescoppard024@gmail.com
If you would like to support me I would greatly appreciate it.
Crypto
- NANO: nano_3ymx5ymxgwrsfc53mem7bfmwjgzwxhtzp41wdkepnxmjdzzhhf3dgiiif8qc
- ETH: 0x46cB2b27C5607282BAdAaf9973EFd728D202A1d3
- BTC: bc1q0f0xtmmf7n05qgnmeun6ytc8z676j8tryszrr3
- DOGE: DRRhYtaFFoyGUaU1h8MyE8LBbMETjDU5AR
This project is licensed under the MIT license. Feel free to edit and distribute the code as you like.
See LICENSE for more information.
Special thanks to the following:
- bluetayden and ningalu for their support and testing
- https://github.com/Itsyuka/osu-buffer - Great tool for reading and writing osu! binary types
- https://github.com/maximegris/angular-electron - Great electron angular template
- https://github.com/dec0dOS/amazing-github-template - Great readme template