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:
@@ -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__":
|
||||||
|
|||||||
33
wavescan.py
33
wavescan.py
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user