A standalone release without any prerequisites is available here: https://github.com/Luux/ARBSMapDo/releases
Yet another map downloader tool? Who needs that?!?
While there are plenty of tools and mods that help downloading playlists, trending maps from score saber and more, their filtering options are kinda limited. I wanted a tool with options like "Download 100 new ranked maps that range from 3.5 to 6 star difficulty, have a minimum of 70% positive Votes and a length between 2:00 and 3:30". ARBSMapDo allows to do exactly that.
- Easy mass downloading of maps crawled from Scoresaber
- It's fast. Both in execution and in handling.
- Filtering options not relying solely on the (undocumented) Scoresaber API - new options can (and will!) be easily added
- Filter by difficulty, community rating, notes per second, length, ...
- Playlist support - Ever wanted to create a playlist with the best (or worst!) ranked maps? You can do that.
- Give ARBSMapDo a link to BeatSaver, bsaber or Scoresaber and it will download the song. It just works, even with bsaber playlists.
- You can even download some songs from scoresaber and a playlist from bsaber and automatically add everything to a custom playlist.
- CL usage - want to automate things? Here you go!
- Presets - if you want to apply the same filters and download new maps again in a few weeks, you can simply save your settings
- Open Source, of course.
Python > 3.4 (due to pathlib) and some libs from requirements.txt. Just run pip install -r requirements.txt
and you're ready.
Or just use the latest standalone release, which is an ready-to-run .exe ;)
There are currently 3 ways to specify filters:
- Without any arguments. There will be an assistant that guides you through common options. Some advanced options will not be shown.
- Command line usage
- Using a preset file
Preset files are in TOML format, so you can just create a txt file of the form
download_dir = "C:\\path\\to\\custom\\songs"
levels_to_download = 100
...
...
The options in the preset file are named the same as the command line options listed below. If you load a preset and have additional command line arguments, the specified command line args overwrite the variables in the preset. (These are not saved unless specified with --save_preset though!)
Currently available command line options (more to be implemented):
usage: arbsmapdo.exe [-h] [--preset PRESET] [-levels LEVELS_TO_DOWNLOAD]xe --help
[--noextract] [--stars_min STARS_MIN]
[--stars_max STARS_MAX] [--ranked_only RANKED_ONLY]
[--scoresaber_sorting {0,1,2}] [--tmp_dir TMP_DIR]
[--download_dir DOWNLOAD_DIR]
[--playlist_dir PLAYLIST_DIR] [--max_threads MAX_THREADS]
[--scoresaber_maxlimit SCORESABER_MAXLIMIT]
[--save_preset SAVE_PRESET]
[--beatmap_rating_min BEATMAP_RATING_MIN]
[--beatmap_rating_max BEATMAP_RATING_MAX]
[--length_min LENGTH_MIN] [--length_max LENGTH_MAX]
[--nps_min NPS_MIN] [--nps_max NPS_MAX]
[--notes_min NOTES_MIN] [--notes_max NOTES_MAX]
[--rescan] [--beatsaver_cachefile BEATSAVER_CACHEFILE]
[--levelhash_cachefile LEVELHASH_CACHEFILE]
[--playlist PLAYLIST] [--playlist_image PLAYLIST_IMAGE]
[-s]
[URIs [URIs ...]]
positional arguments:
URIs URI (Path or URL) to map or playlist (*.bplist).
ARBSMapDo will download and install the specified
map/list.
optional arguments:
-h, --help show this help message and exit
--preset PRESET Path to the preset to use (default:
arbsmapdo_default.toml
-levels LEVELS_TO_DOWNLOAD, --levels_to_download LEVELS_TO_DOWNLOAD
Number of levels to download. One level may have
multiple difficulties!
--noextract Do not extract *.zip files. Helpful for Quest users as
you can upload them directly to BMBF!
--stars_min STARS_MIN
Minimum star difficulty for ranked maps
--stars_max STARS_MAX
Maximum star difficulty for ranked maps
--ranked_only RANKED_ONLY
Only download ranked maps (True or False / 1 or 0)
--scoresaber_sorting {0,1,2}
Scoresaber Sorting Mode. Choices: 0 - Trends, 1 - Date
Ranked, 2 - Scores Set, 3 - Star Difficulty
--tmp_dir TMP_DIR Temporary download dir (default: './download/')
--download_dir DOWNLOAD_DIR
Final download folder where custom levels get
extracted (usually '[BeatSaberPath]\Beat
Saber_Data\CustomLevels')
--playlist_dir PLAYLIST_DIR
Directory where playlist files will be saved at
(usually '[BeatSaberPath]\Playlists')
--max_threads MAX_THREADS
Maximim thread count to use for downloading.
--scoresaber_maxlimit SCORESABER_MAXLIMIT
Maximum maps per 'page' for Scoresaber API. (You
usually don't have to change this.)
--save_preset SAVE_PRESET
Save specified settings into given file. You can load
it next time by using --preset
--beatmap_rating_min BEATMAP_RATING_MIN
Minimum beatmap rating. (Between 0 and 1)
--beatmap_rating_max BEATMAP_RATING_MAX
Maximum beatmap rating. (Between 0 and 1)
--length_min LENGTH_MIN
Minimum map length in seconds
--length_max LENGTH_MAX
Maximum map length in seconds
--nps_min NPS_MIN Minimum notes per second
--nps_max NPS_MAX Maximum notes per second
--notes_min NOTES_MIN
Minimum total note count
--notes_max NOTES_MAX
Maximum total note count
--rescan Force rescan of already downloaded songs. This resets
the cache and results in manually deleted songs being
in the pool again.
--beatsaver_cachefile BEATSAVER_CACHEFILE
Cache file used for BeatSaver cache. (You usually
don't have to change this.)
--levelhash_cachefile LEVELHASH_CACHEFILE
Cache file used for caching already calculated level
hashes. (You usually don't have to change this.)
--playlist PLAYLIST Playlist (file name) where levels from this session
should be added. If the specified playlist does not
exist yet, it will be created.
--playlist_image PLAYLIST_IMAGE
When creating a new playlist, use this image. If not
given, the default image will be used.
-s, --skip_assistant Skip assistant except for neccessary things. You'll
need to specify every argument via command line or
preset
ARBSMapDo is a tool that helps filtering and downloading Custom Levels for the Game Beat Saber developed by Beat Games. The level information is accessed from both the scoresaber API and BeatSaver. The levels itself are user-generated content hosted on BeatSaver, which is where they are downloaded from as well. BeatSaver allows users to upload these levels and hosts them for other users to download. I am not affiliated with BeatSaver in any form, nor do I host user-generated content myself. Any potential copyright infringements have to be directly reported to BeatSaver via a DCMA request at https://beatsaver.com/legal/dmca as I am not responsible for any content hosted there.