Usage Example: OsynicDownloader

osynic_downloader is an efficient osu! beatmap downloader tool based on vielpork, supporting two input formats and parallel downloading, designed for rhythm game players and beatmap managers.

osynic_downloader.gif

Recommended to use with osynic_serializer to achieve fast serialization of osu! beatmaps.

osynic_serializer.gif

โœจ Features

  • Dual-mode input: Supports native osu! beatmap set ID list and custom Osynic serialization generated format
  • Multiple download sources: Currently supports four download sources: OsuDirect, OsuApiV2, SayoApi, and ChimuApi
  • Concurrency support: Multi-threaded concurrent downloading acceleration (default 4 threads) (please note the concurrency limit of various osu! mirror site APIs! Use it properly!)
  • Intelligent management: Automatically create directory structure, custom save path
  • Visual progress: Real-time TUI progress display (supports terminal 256 colors)
  • Error recovery: State recovery mechanism ensures download integrity

๐Ÿ“ฆ Installation

Precompiled version

cargo install osynic_downloader

Source code compilation

git clone https://github.com/osynicite/osynic_downloader
cd osynic_downloader
cargo build --release

๐Ÿš€ Quick Start

Basic usage

# Native mode (ID list)
osynic-dl --beatmapsets json/sets.json -o ./osu_maps -c 8
# Osynic mode (song metadata)
osynic-dl --osynic-songs json/songs.json --output ./music

Configuration file example

sets.json (native mode):

{
    "beatmapset_ids": ["114514", "1919810", "1538879"]
}

songs.json (Osynic mode):

[
  {
    "song_id": 1985060,
    "artist_name": "ใƒ’ใƒˆใƒชใ‚จ",
    "mapper_name": "flake",
    "song_name": "ๆ—ฅๅธธใจๅœฐ็ƒใฎ้ก็ธ (wowaka x ๅˆ้ŸณใƒŸใ‚ฏ Edit)",
    "no_video": false
  },
    {
    "song_id": 1997071,
    "artist_name": "ใƒŠใƒ–ใƒŠ",
    "mapper_name": "Ryuusei Aika",
    "song_name": "ๅง‹็™บใจใ‚ซใƒ•ใ‚ซ",
    "no_video": false
  }
]

๐Ÿ“œ Command Line Options

OptionShortDefaultDescription
--beatmapsets-b-Path to native mode JSON file
--osynic-songs-n-Path to Osynic mode JSON file
--source-sSayoApiosu! beatmap download source
--username-u-osu! account (only for OsuDirect/OsuApiV2)
--password-p-osu! password (only for OsuDirect/OsuApiV2)
--output-obeatmapsetsDownload directory (auto-created)
--concurrency-c4Download concurrency (1-16)
--help-h-Display help information

Supported osu! Download Sources

  1. OsuDirect: Official osu! beatmap download source (osu username and password required)
  2. OsuApiV2: osu!lazer beatmap download source (osu username and password required, Basic authentication)
  3. SayoApi (default): Sayobot beatmap download source (no login required)
  4. ChimuApi: Chimu.moe beatmap download source (no login required)

๐Ÿ“Œ Notes

  1. Video download adaptation (no_video) is not yet implemented, and related options will be ignored
  2. Download file naming follows the {{filename}} naming rule
  3. Interrupting the download process with Ctrl+C and then rerunning will resume the download
  4. It is recommended to use a stable network connection for the best experience

๐Ÿค Contributing

Contributions are welcome! Please follow these guidelines:

  • Follow the official Rust coding style
  • Add test cases for new features
  • Run cargo fmt and cargo clippy before submitting

๐Ÿ“œ License

This project is open-sourced under the MIT License. Please respect the original author's copyright. When using osu! related resources, please follow the osu! community guidelines.