import os,re,collections
MAPS=['Church','City_Street','Chinatown','ContainerHarbour','Harbour','TrainYard','Village','HillVillage','GumiTown','Subway','bank']
FE=['fecore','titles','signin','enter_vault','bag_rifle','mmvan','end_of_round','player_profile','user_options','dev_options','mask_collection','grey_market','hud_thief','hud_sniper','load_splash','android_quit','inbox','clan_join','clan_inspect','standalone','iap_store','affiliation','rank_season','device_limit','PIERole','post_signin','user_disabled']
for lvl in sorted(os.listdir('levels'),key=lambda x:int(x[5:])):
    d=open('levels/'+lvl,'rb').read()
    txt=re.findall(rb'[ -~]{5,60}',d)
    names=[t.decode() for t in txt]
    hits=collections.Counter()
    for n in names:
        for m in MAPS+FE:
            if m.lower() in n.lower(): hits[m]+=1
    top=', '.join('%s(%d)'%(k,v) for k,v in hits.most_common(3))
    # distinctive-looking scene root names
    cand=[n for n in names if re.fullmatch(r'[A-Za-z][A-Za-z0-9_ ]{4,40}',n)]
    freq=collections.Counter(cand)
    sample=', '.join(k for k,_ in freq.most_common(6))
    print('%-9s %7.2fMB  MATCH[%s]' % (lvl,os.path.getsize('levels/'+lvl)/1e6,top))
    print('            top-names: %s'%sample[:150])
