Files
PythonLib/pythonlib/formats/scpk.py
Mc-muffin 6e40568d9d Folder structure
Trying to make it more package-y
2023-08-09 20:43:15 -05:00

50 lines
1.2 KiB
Python

from dataclasses import dataclass
from ..formats.FileIO import FileIO
from ..utils import comptolib
MAGIC = b"SCPK"
@dataclass
class scpk_file():
is_compressed: bool
type: int
data: bytes
class Scpk(FileIO):
def __init__(self, path="") -> None:
super().__init__(path, "r+b", "<")
super().__enter__()
if self.read(4) != MAGIC:
raise ValueError("Not an SCPK file!")
self.unk1 = self.read_uint16()
self.unk2 = self.read_uint16()
file_amount = self.read_uint32()
self.read_uint32() # padding?
self.files = []
sizes = []
for _ in range(file_amount):
sizes.append(self.read_uint32())
for size in sizes:
data = self.read(size)
is_compressed = comptolib.is_compressed(data)
c_type = 0
if is_compressed:
c_type = data[0]
data = comptolib.decompress_data(data)
if len(data) > 8 and data[0:8] == b"THEIRSCE":
self.rsce = data
self.files.append(scpk_file(is_compressed, c_type, data))
def __getitem__(self, item):
return self.files[item]
def __len__(self):
return len(self.files)