import sys, re, glob, os, json
sys.stdout.reconfigure(encoding='utf-8')

DICT = r'C:\Users\hiroy\デスクトップ\furigana_oss\furigana-dict\core'

def kata(s):
    return ''.join(chr(ord(c)+0x60) if 'ぁ' <= c <= 'ゖ' else c for c in s)

kr = {}
def add(k, r):
    if not k or not r:
        return
    r = kata(r.strip())
    # bracket notation 除去
    r = r.replace('[', '').replace(']', '')
    if not r or not all('ァ' <= c <= 'ヶ' or c == 'ー' or c == '・' for c in r):
        return
    kr.setdefault(k, set()).add(r)

# unihan: "漢字" = "よみ"
for path in glob.glob(os.path.join(DICT, 'unihan', '*.toml')):
    with open(path, encoding='utf-8') as f:
        for line in f:
            m = re.match(r'^\s*"(.)"\s*=\s*"([^"]+)"', line)
            if m:
                add(m.group(1), m.group(2))

# kanji block: char + default + ALL match readings (訓/活用語幹を含む)
cur = None
for path in glob.glob(os.path.join(DICT, 'kanji', '*.toml')):
    with open(path, encoding='utf-8') as f:
        for line in f:
            m = re.match(r'^\s*char\s*=\s*"(.)"', line)
            if m:
                cur = m.group(1)
                continue
            m = re.match(r'^\s*(default|reading)\s*=\s*"([^"]+)"', line)
            if m and cur:
                add(cur, m.group(2))

with open(r'N:\stream-comments\data\_analysis\kanji_readings.json', 'w', encoding='utf-8') as o:
    json.dump({k: sorted(v) for k, v in kr.items()}, o, ensure_ascii=False)

print('kanji with readings:', len(kr))
for k in ['疲', '可', '優', '違', '落', '兎', '深', '肝']:
    print(' ', k, sorted(kr.get(k, []))[:10])
