A small personal script used to download and install the top ranked Beat Saber maps from ScoreSaber and BeatSaver
Clone the repo and install dependencies using npm install, or download the latest binary from the Releases tab
The configuration options are stored in a file to allow for no user input, easing automation.
Copy the config.example.json and rename it to config.json
From here, you can configure the script using the options listed below.
The root of your Beat Saber installation directory. The CustomLevels folder will be automatically found from here.
Make sure to use two backslashes when entering a path, as backslashes are an escape character!
Example:
"install": "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Beat Saber"
"install": "C:\\Program Files\\Oculus\\Software\\Software\\hyperbolic-magnetism-beat-saber"
"install": "F:\\SteamLibrary\\steamapps\\common\\Beat Saber"
"install": "F:\\Oculus\\Software\\Software\\hyperbolic-magnetism-beat-saber"
Allows you to override the folder to download maps to. Useful if you're using this with another tool outside of a Beat Saber installation.
If blank or omitted, this will be ignored. The CustomLevels folder from your installation directory will be used.
Example:
"folderOverride": ""
"folderOverride": "C:\\Foo\\Bar\\RankedLevels"
"folderOverride": "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Beat Saber\\Beat Saber_Data\\CustomLevels\\Ranked"
"folderOverride": "C:\\Program Files\\Oculus\\Software\\Software\\hyperbolic-magnetism-beat-saber\\Beat Saber_Data\\CustomLevels\\Ranked"
The number of ranked maps to download.
This used to be the number of difficulties, and as such would result in far fewer maps being downloaded.
Example:
"count": 300
"count": 1000
Whether to extract maps to folders, or save them as zip files. If you are on PC, you likely want this set to true. Quest users may set it to false, so the maps can be more easily uploaded to BMBF.
If omitted, this will be treated as true.
Example:
"extract": true
"extract": false
Whether to download all currently qualified maps. These will be downloaded in addition to the number specified by count
If omitted, this will be treated as false.
Example:
"qualified": false
"qualified": true
Whether to log a warning whenever an unranked map is found in the specified CustomLevels folder. Useful if you have a separate folder for exclusively ranked maps, and want to weed out old qualified versions.
If omitted, this will be treated as false.
Example:
"warnUnranked": false
"warnUnranked": true
The same as the above option, however the program will permanently delete any unranked maps that are found. Not recommended unless you know what you're doing, and are using a separate folder.
If omitted, this will be treated as false.
Example:
"deleteUnranked": false
"deleteUnranked": true
Creates a RankedLevels.bplist playlist in your Playlists folder featuring the downloaded maps. Requires a secondary mod such as PlaylistLoaderLite to view in-game.
If omitted, this will be treated as false.
Example:
"createPlaylist": false
"createPlaylist": true
Allows you to override the location where the playlist file will be created. Should be a path to a file with extension .bplist or .json
If blank or omitted, this will be ignored. RankedLevels.bplist inside your Playlists folder from your installation directory will be used.
Example:
"playlistOverride": ""
"playlistOverride": "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Beat Saber\\Playlists\\RankedLevels.bplist"
"playlistOverride": "C:\\Program Files\\Oculus\\Software\\Software\\hyperbolic-magnetism-beat-saber\\Playlists\\RankedLevels.bplist"
The maximum number of songs to include in the playlist. The songs with the highest star ratings go in first.
If zero or omitted, this will be ignored.
Example:
"playlistMaxCount": 0
"playlistMaxCount": 100
The minimum star rating of songs to be included in the playlist.
If zero or omitted, this will be ignored.
Example:
"playlistMinStars": 0
"playlistMinStars": 10
The maximum star rating of songs to be included in the playlist.
If zero or omitted, this will be ignored.
Example:
"playlistMaxStars": 0
"playlistMaxStars": 10
If you downloaded the binary, extract the zip and run the exe.
If you downloaded the source code, start the project from the command line using npm start
A Windows batch script is also included in the source code for ease of use.
The output from the last run will be written to a file named last_run.log
- Extract
ranked-sync-win-x64.zipif you haven't already - Open
Task Scheduler - Right click on
Task Scheduler Libraryand selectCreate Basic Task... - Name it
RankedSyncand click next - Choose
When I log onand click next - Choose
Start a programand click next - Browse to
ranked-sync.exe - Under
Start in, enter the path to the folder containing the exe and click next - (optional) Check
Open the Properties dialog for this task when I click Finishand click finish - (optional) Under
Security options, chooseRun whether user is logged on or not. This will make the process run in the background without creating a window, but you will need to enter your password when saving the task. - (optional) Click OK and enter your password as prompted
- Clone the repo if you haven't already
- Open
Task Scheduler - Right click on
Task Scheduler Libraryand selectCreate Basic Task... - Name it
RankedSyncand click next - Choose
When I log onand click next - Choose
Start a programand click next - Under
Program/script, enterC:\Windows\System32\cmd.exe - Under
Add arguments, enter/c "npm start" - Under
Start in, enter the path to your clone of the repo and click next - (optional) Check
Open the Properties dialog for this task when I click Finishand click finish - (optional) Under
Security options, chooseRun whether user is logged on or not. This will make the process run in the background without creating a window, but you will need to enter your password when saving the task. - (optional) Click OK and enter your password as prompted
If you have something you'd like to add, feel free to make a PR.
You can contact me on Discord at Rabbit#0001 or on Twitter at @plusonerabbit
This project uses the MIT license