"""Decode selected local display/catalog resources into the private research directory."""
import importlib.util,json,pathlib,re,struct,sys,zlib
spec=importlib.util.spec_from_file_location('assets','research/galaxy_asset_inventory.py')
saved=sys.argv;sys.argv=['inventory','artifacts/navigation-0410-qa/unused.json']
assets=importlib.util.module_from_spec(spec);spec.loader.exec_module(assets);sys.argv=saved
ROOT=assets.ROOT;OUT=pathlib.Path('artifacts/navigation-0410-qa/resources');OUT.mkdir(exist_ok=True)
for key in sys.argv[1:]:
path=ROOT/('0'+key[0])/key; raw=assets.decode(path);(OUT/(key+'.fres')).write_bytes(raw)
print('resource',key,'size',len(raw),'header',raw[:144].hex())
strings=[{'offset':m.start(),'text':m.group().decode()} for m in re.finditer(rb'[A-Za-z_][A-Za-z0-9_.:/ -]{4,}',raw[:6000])]
print('names',json.dumps(strings[:22]))
for m in re.finditer(rb'\x78[\x01\x9c\xda]',raw):
try:
decoder=zlib.decompressobj(); data=decoder.decompress(raw[m.start():],128*1024*1024)
if not decoder.eof: continue
except zlib.error: continue
target=OUT/(key+'.bin');target.write_bytes(data)
(OUT/(key+'-strings.json')).write_text(json.dumps([{'offset':x.start(),'text':x.group().decode()} for x in re.finditer(rb'[A-Za-z_][A-Za-z0-9_.:/ -]{4,}',data)],indent=2))
print('zlib',m.start(),'inflated',len(data),'prefix',data[:128].hex());break
"""Decode selected local display/catalog resources into the private research directory."""
import importlib.util,json,pathlib,re,struct,sys,zlib
spec=importlib.util.spec_from_file_location('assets','research/galaxy_asset_inventory.py')
saved=sys.argv;sys.argv=['inventory','artifacts/navigation-0410-qa/unused.json']
assets=importlib.util.module_from_spec(spec);spec.loader.exec_module(assets);sys.argv=saved
ROOT=assets.ROOT;OUT=pathlib.Path('artifacts/navigation-0410-qa/resources');OUT.mkdir(exist_ok=True)
for key in sys.argv[1:]:
path=ROOT/('0'+key[0])/key; raw=assets.decode(path);(OUT/(key+'.fres')).write_bytes(raw)
print('resource',key,'size',len(raw),'header',raw[:144].hex())
strings=[{'offset':m.start(),'text':m.group().decode()} for m in re.finditer(rb'[A-Za-z_][A-Za-z0-9_.:/ -]{4,}',raw[:6000])]
print('names',json.dumps(strings[:22]))
for m in re.finditer(rb'\x78[\x01\x9c\xda]',raw):
try:
decoder=zlib.decompressobj(); data=decoder.decompress(raw[m.start():],128*1024*1024)
if not decoder.eof: continue
except zlib.error: continue
target=OUT/(key+'.bin');target.write_bytes(data)
(OUT/(key+'-strings.json')).write_text(json.dumps([{'offset':x.start(),'text':x.group().decode()} for x in re.finditer(rb'[A-Za-z_][A-Za-z0-9_.:/ -]{4,}',data)],indent=2))
print('zlib',m.start(),'inflated',len(data),'prefix',data[:128].hex());break