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
- Clone the repository
- Install development dependencies:
pip install -e ".[dev]"
Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
- Add tests for your changes
- Ensure all tests pass
- Submit a pull request
Requirements
- Python 3.7+
- py-bsor library for replay handling
License
MIT
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.3.tar.gz
(22.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bstokenizer-0.1.3.tar.gz.
File metadata
- Download URL: bstokenizer-0.1.3.tar.gz
- Upload date:
- Size: 22.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00c67f2aba3490d2221bf75355aab38e6ccd5365f1fcd707566cd81a56dc9aad
|
|
| MD5 |
ab6b412a9cc11ff767920bc2ea2d76ef
|
|
| BLAKE2b-256 |
0eba8db80ae70f236e94a7d5ffef690a23725844d9dbdbb9cae746e8038990d2
|
File details
Details for the file bstokenizer-0.1.3-py3-none-any.whl.
File metadata
- Download URL: bstokenizer-0.1.3-py3-none-any.whl
- Upload date:
- Size: 23.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad91fcf2938b0aa4eba06893d2f545ae07e4dc45b1e7c142cc5816d126f2c491
|
|
| MD5 |
459534741b012deb19b80569e7f6797c
|
|
| BLAKE2b-256 |
8b71b0877caa3b215baa33e6d72112c8d50e4a7fcd29a3e4b87a90afafc9be66
|