1
0
mirror of https://github.com/Escartem/AnimeWwise.git synced 2026-06-11 12:10:24 +08:00

better error handling

This commit is contained in:
Escartem
2023-11-24 14:51:52 +01:00
parent f4a160ab83
commit 718fa457ba
2 changed files with 24 additions and 11 deletions

View File

@@ -321,12 +321,14 @@ def main():
print(f"[{curr}/{steps}] Cleaning up") print(f"[{curr}/{steps}] Cleaning up")
except Exception as e: except Exception as e:
print("")
print("An error occured while processing this file ! Skipping to the next one, details of the error bellow :") print("An error occured while processing this file ! Skipping to the next one, details of the error bellow :")
print(f"Line {sys.exc_info()[-1].tb_lineno}, {e}") print(f"Line {sys.exc_info()[-1].tb_lineno}, {e}")
# all files processed # all files processed
if os.path.exists("temp") and skips[8] != "1": if os.path.exists("temp") and skips[8] != "1":
shutil.rmtree("temp") shutil.rmtree("temp")
print("-"*30)
print("Done extracting everything !") print("Done extracting everything !")
if __name__ == "__main__": if __name__ == "__main__":

View File

@@ -1,5 +1,6 @@
# Custom rewrite of the Wwise AKPK packages extractor, original by Nicknine and bnnm # Custom rewrite of the Wwise AKPK packages extractor, original by Nicknine and bnnm
from filereader import FileReader from filereader import FileReader
import traceback
import os import os
@@ -16,8 +17,8 @@ def extract(input_file, output_folder):
# check file # check file
if reader.ReadBytes(4) != b"AKPK": if reader.ReadBytes(4) != b"AKPK":
print("Not a valid file") file.close()
return raise Exception("not a valid audio file")
# check endianness # check endianness
reader.SetBufferPos(0x08) reader.SetBufferPos(0x08)
@@ -28,8 +29,8 @@ def extract(input_file, output_folder):
elif endian_check == 0x1000000: elif endian_check == 0x1000000:
endianness = 1 # big endianness = 1 # big
else: else:
print("uknown endianness, aborting") file.close()
return raise Exception("couldn't detect endianness")
# retrieve sectors in header # retrieve sectors in header
reader.SetBufferPos(0x04) reader.SetBufferPos(0x04)
@@ -48,16 +49,26 @@ def extract(input_file, output_folder):
sectors = [[True, banks_sector_size, 0, 0, "bnk"], [False, sounds_sector_size, 1, 0, "wem"], [False, externals_sector_size, 1, 1, "wem"]] sectors = [[True, banks_sector_size, 0, 0, "bnk"], [False, sounds_sector_size, 1, 0, "wem"], [False, externals_sector_size, 1, 1, "wem"]]
# get langs in the file # get langs in the file
lang_array = get_langs(languages_sector_size) try:
lang_array = get_langs(languages_sector_size)
except Exception as e:
file.close()
raise Exception(f"failed to read languages, {e}, {traceback.format_exc()}")
# extract each sector # extract each sector
for sector in sectors: curr_sector = None
extract_sector(*sector[1:], endianness, lang_array, bank_version, output_folder) try:
for sector in sectors:
curr_sector = sector
extract_sector(*sector[1:], endianness, lang_array, bank_version, output_folder)
if sector[0] and bank_version == 0: if sector[0] and bank_version == 0:
if externals_sector_size == 0: if externals_sector_size == 0:
print("can't detect bank version") print("can't detect bank version")
bank_version = 62 bank_version = 62
except Exception as e:
file.close()
raise Exception(f"failed to extract sector {curr_sector}, {e}, {traceback.format_exc()}")
# close # close
file.close() file.close()