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
Metadata
Release files for bstokenizer 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bstokenizer-0.1.3.tar.gz | 22.3 kB | Without provenance | Details for bstokenizer-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bstokenizer-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for bstokenizer-0.1.3-py3-none-any.whl |
Total release size: 46.2 kB
Release files / bstokenizer-0.1.3.tar.gz
| Download URL | bstokenizer-0.1.3.tar.gz |
|---|---|
| Size | 22.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00c67f2aba3490d2221bf75355aab38e6ccd5365f1fcd707566cd81a56dc9aad
|
|
BLAKE2b-256 checksum How to use checksums |
0eba8db80ae70f236e94a7d5ffef690a23725844d9dbdbb9cae746e8038990d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.8
|
Release files / bstokenizer-0.1.3-py3-none-any.whl
| Download URL | bstokenizer-0.1.3-py3-none-any.whl |
|---|---|
| Size | 23.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad91fcf2938b0aa4eba06893d2f545ae07e4dc45b1e7c142cc5816d126f2c491
|
|
BLAKE2b-256 checksum How to use checksums |
8b71b0877caa3b215baa33e6d72112c8d50e4a7fcd29a3e4b87a90afafc9be66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.8
|
Security for bstokenizer 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.