import json
from pathlib import Path

db_path = Path('Archivos/character_hashtags_db.json')
db = json.loads(db_path.read_text(encoding='utf-8'))
pixiv_data = json.loads(Path('Archivos/pixiv_tags.json').read_text(encoding='utf-8')) if Path('Archivos/pixiv_tags.json').exists() else {}

matched_total = 0
for k, v in db.items():
    if k == '_general_pool': continue
    name_lower = v.get('name', '').lower()
    
    for pk, pv in pixiv_data.items():
        if pk.lower() in k.lower() or k.lower() in pk.lower() or (name_lower and name_lower in pk.lower()):
            jp = pv.get('jp')
            en = pv.get('en')
            series = pv.get('series')
            ptags = []
            if jp: ptags.append(f'#{jp}')
            if en: ptags.append(f'#{en.replace(" ", "")}')
            if series: ptags.append(f'#{series.replace(" ", "")}')
            for t in pv.get('r18_pool', [])[:3]:
                ptags.append(f'#{t[0]}')
            if ptags:
                v['pixiv_tags'] = list(set(ptags))
                matched_total += 1
            break

db_path.write_text(json.dumps(db, ensure_ascii=False, indent=2), encoding='utf-8')
print(f'Mapeo masivo completado. Total actualizados/enlazados: {matched_total}')
