Skip to main content

A library for tokenizing Beat Saber maps and replays

Project description

BSTokenizer

A Python library for tokenizing and manipulating Beat Saber maps and replays.

Installation

Features

  • Convert Beat Saber maps to and from a token-based representation
  • Support for all common Beat Saber map formats (v2, v3, and v4)
  • Automatic map format conversion between versions
  • Custom data handling for position modifications
  • Extract and manipulate Beat Saber replay data (BSOR format)
  • Utilities for time-to-beat conversions

Basic Usage

Working with Beat Saber Maps

from bstokenizer import BeatSaberMapTokenizer, convert
import json

# Initialize tokenizer
tokenizer = BeatSaberMapTokenizer(default_bpm=120.0) # default_bpm is the same as the Info.dat bpm

# Load map from file
with open('ExpertPlusStandard.dat', 'r') as f:
    map_data = json.load(f)

# Tokenize the map
tokens = tokenizer.tokenize(map_data)

# Manipulate tokens
for token in tokens:
    if token["type"] == "color_note":
        # Modify note positions
        token["x"] += 1

# Convert back to map format
modified_map = tokenizer.detokenize(tokens)

# Convert between map versions
v3_map = convert(map_data, "v3")

Working with Beat Saber Replays

from bstokenizer import BeatSaberReplayTokenizer

# Initialize tokenizer
replay_tokenizer = BeatSaberReplayTokenizer()

# Load replay from file
replay_tokens = replay_tokenizer.tokenize("path/to/replay.bsor")

# Analyze replay data
for token in replay_tokens:
    if token["type"] == "note":
        # Access note cut data
        if "cut" in token:
            print(f"Note at {token['time']}s - Score: {token['score']}")

For Developers

Running Tests

Ensure your changes work correctly by running the test suite:

# Run all tests
pytest bstokenizer/tests/test.py

# Run with verbose output
pytest -v bstokenizer/tests/test.py

Development Setup

  1. Clone the repository
  2. Install development dependencies:
    pip install -e ".[dev]"
    

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for your changes
  4. Ensure all tests pass
  5. Submit a pull request

Requirements

  • Python 3.7+
  • py-bsor library for replay handling

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bstokenizer-0.1.0.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bstokenizer-0.1.0-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file bstokenizer-0.1.0.tar.gz.

File metadata

  • Download URL: bstokenizer-0.1.0.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for bstokenizer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bd544fb950c98fee0e0f0e7db53c64713f645bb728914178d7c1296d8156d01c
MD5 2bc2821ceeed2daea0c5c47de4c66d68
BLAKE2b-256 56df5839fd1cc821b4114bc41ee34a515410dc1e5dc27f76a54f44d2606adc05

See more details on using hashes here.

File details

Details for the file bstokenizer-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bstokenizer-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for bstokenizer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 358ff0b4e65882c5693fdb2e4fb56856629ff9e52adb86bc38d61ef4f271d4bf
MD5 c4e47d42f57f22474a5eec2689a677cd
BLAKE2b-256 0162c866418d9cd4b3ff90118fd3d408e4294f20a7a43f2a994604615196ed62

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page