1
0
mirror of https://github.com/Escartem/AnimeWwise.git synced 2026-06-05 07:50:23 +08:00

better error handling

This commit is contained in:
Escartem
2025-01-07 14:42:02 +01:00
parent 982bf81c27
commit f28afbb87c
5 changed files with 27 additions and 16 deletions

10
bnk.py
View File

@@ -2,24 +2,27 @@
import io
from filereader import FileReader
def bnk2wem(data):
def bnk2wem(data, name):
# gets raw data from object
reader = FileReader(io.BytesIO(data), "little")
reader = FileReader(io.BytesIO(data), "little", name=name)
bkhd_signature = reader.ReadBytes(4)
if bkhd_signature != b"\x42\x4B\x48\x44":
raise Exception("not a valid bnk")
print(f"[WARNING] invalid bkhd signature at {reader.GetName()}")
return []
bkhd_size = reader.ReadUInt32()
reader.ReadBytes(bkhd_size)
if reader.GetBufferPos() == reader.GetStreamLength():
print(f"[WARNING] empty bnk file at {reader.GetName()}")
return [] # empty bnk
didx_signature = reader.ReadBytes(4)
if didx_signature != b"\x44\x49\x44\x58":
print(f"[WARNING] invalid didx signature at {reader.GetName()}")
return [] # invalid index signature (hirc block instead ?)
didx_size = reader.ReadUInt32()
@@ -35,6 +38,7 @@ def bnk2wem(data):
data_signature = reader.ReadBytes(4)
if data_signature != b"\x44\x41\x54\x41":
print(f"[WARNING] invalid data signature at {reader.GetName()}")
return [] # invalid data signature (missing sector ?)
data_size = reader.ReadUInt32()