Skip to content

Standalone, feature-rich, beautiful collection manager for osu!

License

Notifications You must be signed in to change notification settings

nzbasic/Collection-Helper

Repository files navigation

Logo

Collection Helper


codefactor license stars release downloads lastcommit

electron angular typescript sqlite tailwind

coffee

Table of Contents

About

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:

  • Available in English and Russian (thanks Maks220v for Russian translation)
  • Add/remove/merge collections
  • Edit collections
  • Apply ingame filters to select maps
  • Import and Export collections (WIP)
  • Ability to create custom filters using javascript
  • Inbuilt stream and farm filters
  • Backup your collections
  • Automatically generate practice difficulties with configurable length

Built With

Demo

Example making a collection with the farm filter. Note: you only have to generate cache for a filter once. Demo GIF

Screenshots

Collections Collections image

Running custom filter Custom filter image

Collection editing with custom filter applied (Farm) Collection edit image

Dark mode Dark mode image

Getting Started

Prerequisites

osu!

You must have run your osu! client at least once.

Usage

Video Guide

Download the latest release here

Building yourself (for devs)

Please follow these steps to build the project yourself:

  1. Pull the repo
  2. Install dependencies in both frontend and backend (/ and /app/)
  3. Run "npm run electron:build" (or "npm run start" to dev)
  4. Run the installer found in /releases/

Custom filters

Video Guide

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:

Contributing

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.

Support

Reach out to the maintainer at one of the following places:

Donate

If you would like to support me I would greatly appreciate it.

"Buy Me A Coffee"

Crypto

  • NANO: nano_3ymx5ymxgwrsfc53mem7bfmwjgzwxhtzp41wdkepnxmjdzzhhf3dgiiif8qc
  • ETH: 0x46cB2b27C5607282BAdAaf9973EFd728D202A1d3
  • BTC: bc1q0f0xtmmf7n05qgnmeun6ytc8z676j8tryszrr3
  • DOGE: DRRhYtaFFoyGUaU1h8MyE8LBbMETjDU5AR

License

This project is licensed under the MIT license. Feel free to edit and distribute the code as you like.

See LICENSE for more information.

Acknowledgements

Special thanks to the following:

About

Standalone, feature-rich, beautiful collection manager for osu!

Resources

License

Stars

Watchers

Forks

Packages

No packages published