A tool for downloading all of the osu! beatmap packs automatically and easily.
Important
This tool sends a lot of requests to osu!'s API and could potentially result in your account being limited if used improperly. It is recommended that you use the default settings unless you know what you are doing.
You'll need to install the latest version of Python and you'll also need to have Microsoft Powershell if you're on Windows.
When your "terminal" is referenced it's most likely referring to Powershell if you're on windows, otherwise your default terminal on linux.
You can clone this repository in multiple ways
Either by selecting the "Code" button in the top right of this page, and selecting "Download ZIP"

Or by using the git CLI and running git clone https://github.com/peeblyweeb/osu-pack-downloader
(Open your terminal in the root directory of this repository)
Create a virtual environment using the command py -m venv .venv on Windows, python3 -m venv .venv on linux, or using a separate tool of your choice.
And then use the command .venv/scripts/activate on Windows to enter the environment, or source .venv/bin/activate on linux.
PS: if you encounter an error on Windows along the lines of "execution of scripts is disabled on this system", refer to this doc by microsoft on how to resolve this issue.
on Windows use pip install -r requirements.txt, on linux please use python3 -m pip install -r requirements.txt
Go to https://osu.ppy.sh/home/account/edit and scroll to the bottom until you see "OAuth"
Select "New OAuth Application" and set the Application Name field to whatever you want, but make sure you set the Application Callback URLs field to http://localhost:6748 (If you change the PORT variable in the configuration section below, remember to update it here as well)
Select "Register application" and copy your Client ID and Client Secret
Go back to your terminal from before and if you closed it previously, remember to re-enter the virtual enviroment you had created, reference the above for instructions on how.
And then run the script as following:
On Windows: $env:CLIENT_ID="PUT YOUR CLIENT ID HERE"; $env:CLIENT_SECRET="PUT YOUR CLIENT SECRET HERE"; py main.py
On Linux: CLIENT_ID="PUT YOUR CLIENT ID HERE" CLIENT_SECRET="PUT YOUR CLIENT SECRET HERE" python3 main.py
After running the script a browser tab will open prompting you to authorize your own application to your account. Select "Authorize" and watch as the maps start automatically downloading.
There are a few configurable settings, but they require editing the main.py file.
Upon opening the main.py file, you should see a few variables declared in all caps at the top. The important ones being:
MAX_CONCURRENT_DOWNLOADS- how many downloads should it initiate at onceTARGET_GAMEMODES- what gamemodes to download beatmap packs forPORT- what port the oauth server should run on