import os, json, re
BASE = os.path.dirname(os.path.abspath(__file__))
NI = os.path.join(BASE, 'New Images')
mp = {(r['level'], r['short']): r for r in json.load(open(os.path.join(BASE, '_newimages_map.json'), encoding='utf-8'))}
# group finished files by (level, short)
groups = {}
for f in sorted(os.listdir(NI)):
    m = re.match(r'^(P[1-4])\.(.+?)(\.done)?(_illus_(\d+))?\.(svg|png)$', f)
    if not m: continue
    lvl, short, illus, ext = m.group(1), m.group(2), m.group(5), m.group(6)
    key = (lvl, short)
    groups.setdefault(key, {'level': lvl, 'short': short,
                            'folder': (mp.get(key) or {}).get('folder'),
                            'source_prefix': (mp.get(key) or {}).get('source_prefix'),
                            'files': []})
    groups[key]['files'].append({'file': f, 'illus': illus, 'ext': ext})
out = list(groups.values())
json.dump(out, open(os.path.join(BASE, '_wsA_papers.json'), 'w', encoding='utf-8'), ensure_ascii=False, indent=1)
print('finished papers:', len(out), '| files:', sum(len(g['files']) for g in out))
print('papers missing folder:', [g['short'] for g in out if not g['folder']])
