import os,re,glob,collections
D='obbx/assets/bin/Data'
out='levels'
os.makedirs(out,exist_ok=True)
groups=collections.defaultdict(list)
for f in os.listdir(D):
    m=re.match(r'^(level\d+)(?:\.split(\d+))?$',f)
    if m: groups[m.group(1)].append((int(m.group(2)) if m.group(2) else -1,f))
for lvl,parts in groups.items():
    parts.sort()
    with open(os.path.join(out,lvl),'wb') as w:
        for _,f in parts:
            w.write(open(os.path.join(D,f),'rb').read())
print('reassembled',len(groups),'levels')
for lvl in sorted(groups,key=lambda x:int(x[5:])):
    print('  %-9s %8.2f MB  (%d parts)'%(lvl,os.path.getsize(os.path.join(out,lvl))/1e6,len(groups[lvl])))
