import os
import re

friars_images = os.listdir(r"d:\iss\Franciscan Society\assets\images\friars")
print("Available new friar images:", friars_images)

with open('community-friars.html', 'r', encoding='utf-8') as f:
    html = f.read()

# Match friar cards
card_re = re.compile(r'<div style="text-align: center;">\s*<div style="width: 140px; height: 140px;[^"]*">\s*<img src="([^"]+)" alt="([^"]+)"[^>]*>\s*</div>\s*<h4[^>]*>([^<]+)</h4>', re.MULTILINE)

cards = card_re.findall(html)
print(f"\nFound {len(cards)} friar cards in html.")

def normalize_name(n):
    n = n.lower().replace('.', ' ').replace(',', ' ')
    n = re.sub(r'\b(fr|br|father|brother|deacon)\b', '', n)
    return ' '.join(n.split())

for img, alt, name in cards:
    norm_name = normalize_name(name)
    best_match = None
    for f in friars_images:
        norm_file = normalize_name(os.path.splitext(f)[0])
        # Check tokens overlap
        tokens_name = set(norm_name.split())
        tokens_file = set(norm_file.split())
        if tokens_name and tokens_name.issubset(tokens_file) or (tokens_file and tokens_file.issubset(tokens_name)):
            best_match = f
            break
        # also check surname and first name
        if len(tokens_name.intersection(tokens_file)) >= 2:
            best_match = f
            break
    if best_match:
        print(f"MATCH: '{name}' -> 'assets/images/friars/{best_match}'")
    else:
        # Check partial
        partial = [f for f in friars_images if any(tok in f.lower() for tok in norm_name.split() if len(tok) > 3)]
        print(f"NO DIRECT MATCH: '{name}' (Potential: {partial})")
