#!/usr/bin/env python3 """Extract a single file from a Fallout 4 BA2 (BTDX) archive.""" from __future__ import annotations import argparse import struct import zlib from pathlib import Path def read_name(data: bytes, offset: int) -> tuple[str, int]: length = struct.unpack_from(" None: data = archive.read_bytes() if data[:4] != b"BTDX": raise SystemExit(f"Not a BA2 archive: {archive}") version = struct.unpack_from(" {output}") return raise SystemExit(f"File not found in archive: {target}") def main() -> None: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("archive", type=Path) parser.add_argument("target", help="Archive path, e.g. Interface\\MainMenu.swf") parser.add_argument("output", type=Path) args = parser.parse_args() extract_file(args.archive, args.target, args.output) if __name__ == "__main__": main()