Skip to content

Commit 910b7c1

Browse files
committed
WebFile - accept and pass kwargs to super
fixes #205
1 parent 2fe1be2 commit 910b7c1

File tree

1 file changed

+22
-24
lines changed

1 file changed

+22
-24
lines changed

UnityPy/files/WebFile.py

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,15 @@ class WebFile(File.File):
99
1010
files -- list of all files in the WebFile
1111
"""
12-
13-
def __init__(self, reader: EndianBinaryReader, parent: File, name=None):
14-
"""Constructor Method
15-
"""
16-
super().__init__(parent=parent, name=name)
17-
12+
13+
def __init__(self, reader: EndianBinaryReader, parent: File, name=None, **kwargs):
14+
"""Constructor Method"""
15+
super().__init__(parent=parent, name=name, **kwargs)
16+
1817
# check compression
1918
magic = reader.read_bytes(2)
2019
reader.Position = 0
21-
20+
2221
if magic == CompressionHelper.GZIP_MAGIC:
2322
self.packer = "gzip"
2423
data = CompressionHelper.decompress_gzip(reader.bytes)
@@ -34,49 +33,49 @@ def __init__(self, reader: EndianBinaryReader, parent: File, name=None):
3433
else:
3534
self.packer = "none"
3635
reader.endian = "<"
37-
36+
3837
# signature check
3938
signature = reader.read_string_to_null()
4039
if signature != "UnityWebData1.0":
4140
return
4241
self.signature = signature
43-
42+
4443
# read header -> contains file headers
4544
head_length = reader.read_int()
46-
45+
4746
files = []
4847
while reader.Position < head_length:
4948
offset = reader.read_int()
5049
length = reader.read_int()
5150
path_length = reader.read_int()
5251
name = bytes(reader.read_bytes(path_length)).decode("utf-8")
5352
files.append(File.DirectoryInfo(name, offset, length))
54-
53+
5554
self.read_files(reader, files)
56-
55+
5756
def save(
58-
self,
59-
files: dict = None,
60-
packer: str = "none",
61-
signature: str = "UnityWebData1.0",
57+
self,
58+
files: dict = None,
59+
packer: str = "none",
60+
signature: str = "UnityWebData1.0",
6261
) -> bytes:
6362
# solve defaults
6463
if not files:
6564
files = self.files
6665
if not packer:
6766
packer = self.packer
68-
67+
6968
# get raw data
7069
files = {
7170
name: f.bytes if isinstance(f, EndianBinaryReader) else f.save()
7271
for name, f in files.items()
7372
}
74-
73+
7574
# create writer
7675
writer = EndianBinaryWriter(endian="<")
7776
# signature
7877
writer.write_string_to_null(signature)
79-
78+
8079
# data offset
8180
offset = sum(
8281
[
@@ -88,9 +87,9 @@ def save(
8887
4, # offset int
8988
]
9089
)
91-
90+
9291
writer.write_int(offset)
93-
92+
9493
# 1. file headers
9594
for name, data in files.items():
9695
# offset
@@ -103,15 +102,14 @@ def save(
103102
enc_path = name.encode("utf-8")
104103
writer.write_int(len(enc_path))
105104
writer.write(enc_path)
106-
105+
107106
# 2. file data
108107
for data in files.values():
109108
writer.write(data)
110-
109+
111110
if packer == "gzip":
112111
return CompressionHelper.compress_gzip(writer.bytes)
113112
elif packer == "brotli":
114113
return CompressionHelper.compress_brotli(writer.bytes)
115114
else:
116115
return writer.bytes
117-

0 commit comments

Comments
 (0)