A python library for reading osz2 files
Project description
osz2.py
osz2.py is a Python library for reading osz2 files. It's a direct port of the existing Osz2Decryptor project by xxCherry and osz2-go by me. The Python port itself was done by @ascenttree; all credit goes to them.
Installation
pip install osz2
Or install from source:
git clone https://github.com/Lekuruu/osz2.py
cd osz2.py
pip install -e .
Usage
This repository provides a command-line interface for easy testing:
python cli.py <input.osz2> <output_directory>
But that's not all!
Here is an example of how to use osz2.py as a library:
from osz2 import Osz2Package, MetadataType
# Parse package from file
package = Osz2Package.from_file("beatmap.osz2")
# Access metadata
print("Title:", package.metadata.get(MetadataType.Title))
print("Artist:", package.metadata.get(MetadataType.Artist))
print("Creator:", package.metadata.get(MetadataType.Creator))
print("Difficulty:", package.metadata.get(MetadataType.Difficulty))
# Access files
for file in package.files:
print(f"File: {file.filename}, Size: {len(file.content)} bytes")
# Extract specific files
for file in package.files:
if not file.filename.endswith(".osu"):
continue
with open(file.filename, "wb") as f:
f.write(file.content)
Metadata-only Mode
If you only need to read metadata without extracting files, you can use the metadata_only parameter:
# Only parse metadata
package = Osz2Package.from_file("beatmap.osz2", metadata_only=True)
# Access metadata
print("Title:", package.metadata.get(MetadataType.Title))
print("BeatmapSet ID:", package.metadata.get(MetadataType.BeatmapSetID))
Alternative Constructors
# From file path
package = Osz2Package.from_file("beatmap.osz2")
# From bytes
with open("beatmap.osz2", "rb") as f:
data = f.read()
package = Osz2Package.from_bytes(data)
# From an io.BufferedReader-like object, e.g. a file stream
with open("beatmap.osz2", "rb") as f:
package = Osz2Package(f)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 osz2-1.0.1.tar.gz.
File metadata
- Download URL: osz2-1.0.1.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdff8c1d9fce8fe9106524cbe15ef5a66e08dd6bda37ee94dd25cd1f82030f9c
|
|
| MD5 |
e0156386c0b4fcfefcf3dfad46516085
|
|
| BLAKE2b-256 |
acf8ad76696aa2766d15be45f1a30d3df36c0f00b591c65126a2963e4d893ed6
|
File details
Details for the file osz2-1.0.1-py3-none-any.whl.
File metadata
- Download URL: osz2-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
137e45e2b2d27f8f273112f4bdfc6f0203000ef540205ea06e200c32e7485b64
|
|
| MD5 |
a20746f3f17d17313656808de3e58b07
|
|
| BLAKE2b-256 |
23ff9c7b95d47fdf5f002f7844466994de26b4f263ae100b9abd70c418f251c3
|