python bindings for rman
Project description
rman_py
Python bindings for the Riot Manifest and Bundle toolkit.
Installation
pip install .
Usage Examples
Below are examples of basic usage for all available functions.
import time
import os
if os.name == 'nt':
os.add_dll_directory(r"C:\Program Files (x86)\WinFsp\bin")
import rman_py
rman_py.bundle.check(inputs=["path/to/bundles"])
rman_py.bundle.extract(output="./out", inputs=["file.bundle"])
rman_py.bundle.list(inputs=["file.bundle"])
rman_py.bundle.merge(output="out.bundle", inputs=["in1.bundle", "in2.bundle"])
rman_py.bundle.usage(inputs=["./bundles"])
rman_py.manifest.list_bundles(inputs=["game.manifest"])
rman_py.manifest.check(manifest="game.manifest", bundle="global.bundle")
rman_py.manifest.diff(output="patch.manifest", from_manifest="v1.manifest", into_manifest="v2.manifest")
rman_py.manifest.download(manifest="game.manifest")
rman_py.manifest.list(manifest="game.manifest")
rman_py.manifest.make(output_manifest="new.manifest", output_bundle="data.bundle", root_folder="./src")
rman_py.manifest.merge(output="merged.manifest", manifests=["1.manifest", "2.manifest"])
rman_py.manifest.rads(output="out.manifest", input_manifest="in.manifest")
rman_py.manifest.remake(out_bundle="new.bundle", out_manifest="new.manifest", in_bundle="old.bundle", in_manifests=["old.manifest"])
handle = None
try:
handle = rman_py.manifest.mount(
output=os.path.abspath("./rman-mounted"),
manifests=[os.path.abspath("./Manifests/RADS.json.zstd")],
cache_path=os.path.abspath("./Bundles/RADS.bundle"),
cache_readonly=True
)
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\n[Ctrl+C] Detected. Unmounting...")
except Exception as e:
print(f"\nCRITICAL ERROR: {e}")
finally:
if handle:
handle.unmount()
print("Cleanup complete.")
API Reference
Detailed parameter list for each function. Python argument names match original CLI flags using snake_case.
Module: rman_py.bundle
bundle.check
Python Usage:
rman_py.bundle.check(inputs: collections.abc.Sequence[str], no_hash: bool = False, no_extract: bool = False, no_progress: bool = False, parallel: typing.SupportsInt | typing.SupportsIndex = 0) -> None
Description & CLI Arguments:
Usage: rbun-chk.exe [-h] [--no-extract] [--no-hash] [--no-progress] [--parallel VAR] input
Checks one or more bundles for errors.
Positional arguments:
input Bundle file(s) or folder(s) to read from. [nargs: 0 or more] [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--no-extract Do not even attempt to extract chunk.
--no-hash Do not verify hash.
--no-progress Do not print progress to cerr.
--parallel Number of threads to use. [default: 0]
bundle.extract
Python Usage:
rman_py.bundle.extract(output: str, inputs: collections.abc.Sequence[str], with_offset: bool = False, force: bool = False, no_hash: bool = False, no_progress: bool = False) -> None
Description & CLI Arguments:
Usage: rbun-ex.exe [-h] [--with-offset] [--force] [--no-hash] [--no-progress] output input
Extracts one or more bundles.
Positional arguments:
output Directory to write chunks into. [required]
input Bundle file(s) or folder(s) to read from. [nargs: 0 or more] [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--with-offset Put hex offset in name.
-f, --force Force overwrite existing files.
--no-hash Do not verify hash.
--no-progress Do not print progress to cerr.
bundle.list
Python Usage:
rman_py.bundle.list(inputs: collections.abc.Sequence[str], format: str = '{bundleId},{chunkId},{compressedSize},{uncompressedSize}') -> None
Description & CLI Arguments:
Usage: rbun-ls.exe [-h] [--format VAR] input
Lists contents of one or more bundles.
Positional arguments:
input Bundle file(s) or folder(s) to read from. [nargs: 0 or more] [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--format Format output. [default: "{bundleId},{chunkId},{compressedSize},{uncompressedSize}"]
bundle.merge
Python Usage:
rman_py.bundle.merge(output: str, inputs: collections.abc.Sequence[str], level_recompress: typing.SupportsInt | typing.SupportsIndex = 0, no_extract: bool = False, no_progress: bool = False, newonly: bool = False, buffer_mib: typing.SupportsInt | typing.SupportsIndex = 32, limit_gib: typing.SupportsInt | typing.SupportsIndex = 4096) -> None
Description & CLI Arguments:
Usage: rbun-merge.exe [-h] [--level-recompress VAR] [--no-extract] [--no-progress] [--newonly] [--buffer VAR] [--limit VAR] output input
Adds one or more bundles into first first bundle.
Positional arguments:
output Bundle file to write into. [required]
input Bundle file(s) or folder to write from. [nargs: 0 or more] [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--level-recompress Re-compression level for zstd(0 to disable recompression). [default: 0]
--no-extract Do not extract and verify chunk hash.
--no-progress Do not print progress to cerr.
--newonly Force create new part regardless of size.
--buffer Size for buffer before flush to disk in megabytes [1, 4096] [default: 32]
--limit Size for bundle limit in gigabytes [0, 4096] [default: 4096]
bundle.usage
Python Usage:
rman_py.bundle.usage(inputs: collections.abc.Sequence[str]) -> None
Description & CLI Arguments:
Usage: rbun-usage.exe [-h] input
Collects size usage statistics on one or more bundle.
Positional arguments:
input Bundle file(s) or folder(s) to read from. [nargs: 0 or more] [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
Module: rman_py.manifest
manifest.list_bundles
Python Usage:
rman_py.manifest.list_bundles(inputs: collections.abc.Sequence[str], format: str = '/{bundleId}.bundle') -> None
Description & CLI Arguments:
Usage: rman-bl.exe [-h] [--format VAR] input
Lists bundle names used in manifest.
Positional arguments:
input Manifest file(s) or folder(s) to read from. [nargs: 0 or more] [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--format Format output. [default: "/{bundleId}.bundle"]
manifest.check
Python Usage:
rman_py.manifest.check(manifest: str, bundle: str) -> None
Description & CLI Arguments:
Usage: rman-chk.exe [-h] inmanifest inbundle
Splits JRMAN .
Positional arguments:
inmanifest Manifest to read from. [required]
inbundle Source bundle to read from. [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
manifest.diff
Python Usage:
rman_py.manifest.diff(output: str, from_manifest: str, into_manifest: str, filter_lang: str | None = None, filter_path: str | None = None) -> None
Description & CLI Arguments:
Usage: rman-diff.exe [-h] [--filter-lang VAR] [--filter-path VAR] outmanifset frommanifest intomanifest
Diff files in manifest.
Positional arguments:
outmanifset Manifest file to write into. [required]
frommanifest Manifest file to patch from. [required]
intomanifest Manifest file to patch into. [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
-l, --filter-lang Filter: language(none for international files). [default: <not representable>]
-p, --filter-path Filter: path with regex match. [default: <not representable>]
manifest.download
Python Usage:
rman_py.manifest.download(manifest: str, output: str = '.', update: str = '', filter_lang: str | None = None, filter_path: str | None = None, no_verify: bool = False, no_write: bool = False, no_progress: bool = False, cache_path: str = '', cache_readonly: bool = False, cache_newonly: bool = False, cache_buffer_mib: typing.SupportsInt | typing.SupportsIndex = 32, cache_limit_gib: typing.SupportsInt | typing.SupportsIndex = 4, cdn_url: str = 'http://lol.secure.dyn.riotcdn.net/channels/public', cdn_lowspeed_time: typing.SupportsInt | typing.SupportsIndex = 0, cdn_lowspeed_kbps: typing.SupportsInt | typing.SupportsIndex = 64, cdn_retry: typing.SupportsInt | typing.SupportsIndex = 3, cdn_workers: typing.SupportsInt | typing.SupportsIndex = 32, cdn_interval_ms: typing.SupportsInt | typing.SupportsIndex = 100, cdn_verbose: bool = False, cdn_buffer_kb: typing.SupportsInt | typing.SupportsIndex = 512, cdn_proxy: str = '', cdn_useragent: str = '', cdn_cookiefile: str = '', cdn_cookielist: str = '') -> None
Description & CLI Arguments:
Usage: rman-dl.exe [-h] [--filter-lang VAR] [--filter-path VAR] [--update VAR] [--no-verify] [--no-write] [--no-progress] [--cache VAR] [--cache-readonly] [--cache-newonly] [--cache-buffer VAR] [--cache-limit VAR] [--cdn VAR] [--cdn-lowspeed-time VAR] [--cdn-lowspeed-limit VAR] [--cdn-retry VAR] [--cdn-workers VAR] [--cdn-interval VAR] [--cdn-verbose] [--cdn-buffer VAR] [--cdn-proxy VAR] [--cdn-useragent VAR] [--cdn-cookiefile VAR] [--cdn-cookielist VAR] manifest output
Downloads or repairs files in manifest.
Positional arguments:
manifest Manifest file to read from. [required]
output Output directory to store and verify files from. [default: "."]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
-l, --filter-lang Filter by language(none for international files) with regex match. [default: <not representable>]
-p, --filter-path Filter by path with regex match. [default: <not representable>]
-u, --update Filter: update from old manifest. [default: ""]
--no-verify Force force full without verify.
--no-write Do not write to file.
--no-progress Do not print progress.
--cache Cache file path. [default: ""]
--cache-readonly Do not write to cache.
--cache-newonly Force create new part regardless of size.
--cache-buffer Size for cache buffer in megabytes [1, 4096] [default: 32]
--cache-limit Size for cache bundle limit in gigabytes [0, 4096] [default: 4]
--cdn Source url to download files from. [default: "http://lol.secure.dyn.riotcdn.net/channels/public"]
--cdn-lowspeed-time Curl seconds that the transfer speed should be below. [default: 0]
--cdn-lowspeed-limit Curl average transfer speed in killobytes per second that the transfer should be above. [default: 64]
--cdn-retry Number of retries to download from url. [default: 3]
--cdn-workers Number of connections per downloaded file. [default: 32]
--cdn-interval Curl poll interval in miliseconds. [default: 100]
--cdn-verbose Curl: verbose logging.
--cdn-buffer Curl buffer size in killobytes [1, 512]. [default: 512]
--cdn-proxy Curl: proxy. [default: ""]
--cdn-useragent Curl: user agent string. [default: ""]
--cdn-cookiefile Curl cookie file or '-' to disable cookie engine. [default: ""]
--cdn-cookielist Curl: cookie list string. [default: ""]
manifest.list
Python Usage:
rman_py.manifest.list(manifest: str, format: str = '{path},{size},{fileId},{langs}', filter_lang: str | None = None, filter_path: str | None = None) -> None
Description & CLI Arguments:
Usage: rman-ls.exe [-h] [--format VAR] [--filter-lang VAR] [--filter-path VAR] manifest
Lists files in manifest.
Positional arguments:
manifest Manifest file to read from. [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--format Format output. [default: "{path},{size},{fileId},{langs}"]
-l, --filter-lang Filter: language(none for international files). [default: <not representable>]
-p, --filter-path Filter: path with regex match. [default: <not representable>]
manifest.make
Python Usage:
rman_py.manifest.make(output_manifest: str, output_bundle: str, root_folder: str, inputs: collections.abc.Sequence[str] = [], append: bool = False, no_progress: bool = False, strip_chunks: bool = False, cdc_algo: str = 'fixed', no_ar: str = '', ar_strict: bool = False, ar_min_kb: typing.SupportsInt | typing.SupportsIndex = 4, chunk_size_kb: typing.SupportsInt | typing.SupportsIndex = 1024, level: typing.SupportsInt | typing.SupportsIndex = 6, level_high_entropy: typing.SupportsInt | typing.SupportsIndex = 0, newonly: bool = False, buffer_mib: typing.SupportsInt | typing.SupportsIndex = 32, limit_gib: typing.SupportsInt | typing.SupportsIndex = 4096) -> None
Description & CLI Arguments:
Usage: rman-make.exe [-h] [--append] [--no-progress] [--strip-chunks] [--cdc VAR] [--no-ar VAR] [--ar-strict] [--ar-min VAR] [--chunk-size VAR] [--level VAR] [--level-high-entropy VAR] [--newonly] [--buffer VAR] [--limit VAR] outmanifest outbundle rootfolder input
Lists bundle names used in manifest.
Positional arguments:
outmanifest Manifest to write into. [required]
outbundle Bundle file to write into. [required]
rootfolder Root folder to rebase from. [required]
input Files or folders for manifest. [nargs: 0 or more] [default: {}]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--append Append manifest instead of overwriting.
--no-progress Do not print progress.
--strip-chunks
--cdc Dumb chunking fallback algorithm fixed, bup [default: "fixed"]
--no-ar Regex of disable smart chunkers, can be any of: fsb, fsb5, load, mac_exe, mac_fat, pe, wad, wpk, zip [default: ""]
--ar-strict Do not fallback to dumb chunking on ar errors.
--ar-min Smart chunking minimum size in killobytes [1, 4096]. [default: 4]
--chunk-size Chunk max size in killobytes [1, 8096]. [default: 1024]
--level Compression level for zstd. [default: 6]
--level-high-entropy Set compression level for high entropy chunks(0 for no special handling). [default: 0]
--newonly Force create new part regardless of size.
--buffer Size for buffer before flush to disk in megabytes [1, 4096] [default: 32]
--limit Size for bundle limit in gigabytes [0, 4096] [default: 4096]
manifest.merge
Python Usage:
rman_py.manifest.merge(output: str, manifests: collections.abc.Sequence[str], cache_path: str = '', cache_newonly: bool = False, cache_buffer_mib: typing.SupportsInt | typing.SupportsIndex = 32, cache_limit_gib: typing.SupportsInt | typing.SupportsIndex = 4096, filter_lang: str | None = None, filter_path: str | None = None, strip_chunks: bool = False, with_prefix: bool = False) -> None
Description & CLI Arguments:
Usage: rman-merge.exe [-h] [--no-progress] [--strip-chunks] [--with-prefix] [--cache VAR] [--cache-newonly] [--cache-buffer VAR] [--cache-limit VAR] [--filter-lang VAR] [--filter-path VAR] outmanifest manifests
Merges multiple manifests into one
Positional arguments:
outmanifest Manifest to write into. [required]
manifests Manifest files to read from. [nargs: 0 or more] [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--no-progress Do not print progress.
--strip-chunks
--with-prefix Prefix file paths with manifest name
--cache Cache file path. [default: ""]
--cache-newonly Force create new part regardless of size.
--cache-buffer Size for cache buffer in megabytes [1, 4096] [default: 32]
--cache-limit Size for cache bundle limit in gigabytes [0, 4096] [default: 4096]
-l, --filter-lang Filter: language(none for international files). [default: <not representable>]
-p, --filter-path Filter: path with regex match. [default: <not representable>]
manifest.mount
Python Usage:
rman_py.manifest.mount(output: str, manifests: collections.abc.Sequence[str], fuse_debug: bool = False, with_prefix: bool = False, filter_lang: str | None = None, filter_path: str | None = None, cache_path: str = '', cache_readonly: bool = False, cache_newonly: bool = False, cache_buffer_mib: typing.SupportsInt | typing.SupportsIndex = 32, cache_limit_gib: typing.SupportsInt | typing.SupportsIndex = 4, cdn_url: str = 'http://lol.secure.dyn.riotcdn.net/channels/public', cdn_lowspeed_time: typing.SupportsInt | typing.SupportsIndex = 0, cdn_lowspeed_kbps: typing.SupportsInt | typing.SupportsIndex = 64, cdn_verbose: bool = False, cdn_buffer_kb: typing.SupportsInt | typing.SupportsIndex = 512, cdn_proxy: str = '', cdn_useragent: str = '', cdn_cookiefile: str = '', cdn_cookielist: str = '') -> rman_py.manifest.MountHandle
Description & CLI Arguments:
Usage: rman-mount.exe [-h] [--fuse-debug] [--with-prefix] [--filter-lang VAR] [--filter-path VAR] [--cache VAR] [--cache-readonly] [--cache-newonly] [--cache-buffer VAR] [--cache-limit VAR] [--cdn VAR] [--cdn-lowspeed-time VAR] [--cdn-lowspeed-limit VAR] [--cdn-verbose] [--cdn-buffer VAR] [--cdn-proxy VAR] [--cdn-useragent VAR] [--cdn-cookiefile VAR] [--cdn-cookielist VAR] output manifests
Mounts manifests.
Positional arguments:
output output directory to mount in. [required]
manifests Manifest files to read from. [nargs: 0 or more] [required]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--fuse-debug FUSE debug
--with-prefix Prefix file paths with manifest name
-l, --filter-lang Filter by language(none for international files) with regex match. [default: <not representable>]
-p, --filter-path Filter by path with regex match. [default: <not representable>]
--cache Cache file path. [default: ""]
--cache-readonly Do not write to cache.
--cache-newonly Force create new part regardless of size.
--cache-buffer Size for cache buffer in megabytes [1, 4096] [default: 32]
--cache-limit Size for cache bundle limit in gigabytes [0, 4096] [default: 4]
--cdn Source url to download files from. [default: "http://lol.secure.dyn.riotcdn.net/channels/public"]
--cdn-lowspeed-time Curl seconds that the transfer speed should be below. [default: 0]
--cdn-lowspeed-limit Curl average transfer speed in killobytes per second that the transfer should be above. [default: 64]
--cdn-verbose Curl: verbose logging.
--cdn-buffer Curl buffer size in killobytes [1, 512]. [default: 512]
--cdn-proxy Curl: proxy. [default: ""]
--cdn-useragent Curl: user agent string. [default: ""]
--cdn-cookiefile Curl cookie file or '-' to disable cookie engine. [default: ""]
--cdn-cookielist Curl: cookie list string. [default: ""]
manifest.rads
Python Usage:
rman_py.manifest.rads(output: str, input_manifest: str, input_bundle: str = '', input_release: str = '', append: bool = False) -> None
Description & CLI Arguments:
Usage: rman-rads.exe [-h] [--append] outmanifest inmanifest inbundle inrelease
Splits JRMAN .
Positional arguments:
outmanifest Manifest to write into. [required]
inmanifest Manifest to read from. [required]
inbundle Source bundle to read from. [required]
inrelease Project or solution path inside bundle. If bundle is empty treat it as regex instead. [default: ""]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
--append Append manifest instead of overwriting.
manifest.remake
Python Usage:
rman_py.manifest.remake(out_bundle: str, out_manifest: str, in_bundle: str, in_manifests: collections.abc.Sequence[str], resume_file: str = '', resume_buffer_kb: typing.SupportsInt | typing.SupportsIndex = 64, filter_lang: str | None = None, filter_path: str | None = None, append: bool = False, no_progress: bool = False, strip_chunks: bool = False, with_prefix: bool = False, cdc_algo: str = 'fixed', no_ar: str = '', ar_strict: bool = False, ar_min_kb: typing.SupportsInt | typing.SupportsIndex = 4, chunk_size_kb: typing.SupportsInt | typing.SupportsIndex = 1024, level: typing.SupportsInt | typing.SupportsIndex = 6, level_high_entropy: typing.SupportsInt | typing.SupportsIndex = 0, newonly: bool = False, buffer_mib: typing.SupportsInt | typing.SupportsIndex = 32, limit_gib: typing.SupportsInt | typing.SupportsIndex = 4096) -> None
Description & CLI Arguments:
Usage: rman-remake.exe [-h] [--filter-lang VAR] [--filter-path VAR] [--resume VAR] [--resume-buffer VAR] [--append] [--no-progress] [--strip-chunks] [--with-prefix] [--no-ar VAR] [--ar-strict] [--cdc VAR] [--ar-min VAR] [--chunk-size VAR] [--level VAR] [--level-high-entropy VAR] [--newonly] [--buffer VAR] [--limit VAR] outbundle outmanifest inbundle inmanifests
Remake manifests by rechunking all file data.
Positional arguments:
outbundle Bundle file to write into. [required]
outmanifest Manifest to write into. [required]
inbundle Input bundle to read from [required]
inmanifests Input manifests. [nargs: 0 or more] [default: {}]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
-l, --filter-lang Filter: language(none for international files). [default: <not representable>]
-p, --filter-path Filter: path with regex match. [default: <not representable>]
--resume Resume file path used to store processed fileIds. [default: ""]
--resume-buffer Size for resume buffer before flush to disk in kilobytes [1, 16384] [default: 64]
--append Append manifest instead of overwriting.
--no-progress Do not print progress.
--strip-chunks
--with-prefix Prefix file paths with manifest name
--no-ar Regex of disable smart chunkers, can be any of: fsb, fsb5, load, mac_exe, mac_fat, pe, wad, wpk, zip [default: ""]
--ar-strict Do not fallback to dumb chunking on ar errors.
--cdc Dumb chunking fallback algorithm fixed, bup [default: "fixed"]
--ar-min Smart chunking minimum size in killobytes [1, 4096]. [default: 4]
--chunk-size Chunk max size in killobytes [1, 8096]. [default: 1024]
--level Compression level for zstd. [default: 6]
--level-high-entropy Set compression level for high entropy chunks(0 for no special handling). [default: 0]
--newonly Force create new part regardless of size.
--buffer Size for buffer before flush to disk in megabytes [1, 4096] [default: 32]
--limit Size for bundle limit in gigabytes [0, 4096] [default: 4096]
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 rman_py-0.1.0.tar.gz.
File metadata
- Download URL: rman_py-0.1.0.tar.gz
- Upload date:
- Size: 64.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a56c4d82fb241b135a6f566670a6835d39cd1a840f7b13f281caaa2e2fc649b3
|
|
| MD5 |
45883dd975e4867563a6951af830680b
|
|
| BLAKE2b-256 |
e79cce7f4a4a2ef897a85884d8f67ac1da2ca7423fc5f720e38aabb33f232dff
|
File details
Details for the file rman_py-0.1.0-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: rman_py-0.1.0-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 767.2 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8c6ecd9496a22f83a928aa694f1f721e5ce4f1b8e1e026506478ccab6f69f7f
|
|
| MD5 |
e4568d2941c0a32bfbd6050a77d32ff2
|
|
| BLAKE2b-256 |
db0d3a2403f9cd5bb2c77f493d6947a71343b1c7e698581af747889b404771a3
|