import json,os,re,urllib.request
meta=json.load(open("/tmp/f_meta.json")); frslug=meta["frslug"]
def jina(url):
    req=urllib.request.Request("https://r.jina.ai/"+url,headers={"X-With-Images-Summary":"true"})
    return urllib.request.urlopen(req,timeout=90).read().decode("utf-8","replace")
out={}
for slug,fs in frslug.items():
    live=f"https://emrahcinik.com/fr{fs}/"
    try: md=jina(live)
    except Exception as e:
        out[slug]={"live":False,"err":str(e)[:80]}; print(slug,"NON LIVE",str(e)[:60]); continue
    lines=md.split("\n")
    # base path WP depuis 1ere image SLUG
    SL=slug.upper().replace("-DE-","-DE-")  # filenames use SLUG en majuscules avec tirets
    # detecte le motif de fichier image de l'article
    imgs=re.findall(r"!\[[^\]]*\]\((https?://[^)]+?/wp-content/uploads/[^)]+?\.(?:jpg|jpeg|png|webp))\)",md)
    # garde celles qui ressemblent à la série de l'article (NN... -SLUG ou date récente)
    base=None
    series=[]
    for u in imgs:
        m=re.search(r"/wp-content/uploads/(\d{4}/\d{2})/([^/?]+)$",u)
        if not m: continue
        ym,fn=m.group(1),m.group(2)
        if re.match(r"\d{2}[A-Z]{0,2}-",fn):  # NN- ou NNFR-
            series.append((ym,fn,u))
    # placement inline: heading précédent
    placements=[]; lastH=None; hidx=-1; headings=[]
    for ln in lines:
        hm=re.match(r"^(#{2,3})\s+(.*)",ln)
        if hm:
            hidx+=1; lastH=(hidx,hm.group(2).strip()); headings.append(hm.group(2).strip())
        im=re.search(r"!\[[^\]]*\]\((https?://[^)]+?/wp-content/uploads/[^)]+?)\)",ln)
        if im:
            u=im.group(1); m=re.search(r"/(\d{4}/\d{2})/([^/?]+)$",u)
            if m and re.match(r"\d{2}[A-Z]{0,2}-",m.group(2)):
                placements.append({"file":m.group(2),"ym":m.group(1),"after_h":(lastH[0] if lastH else -1),"after_txt":(lastH[1] if lastH else "TOP")})
    out[slug]={"live":True,"placements":placements,"headings":headings}
    print(f"{slug}: live, {len(placements)} images placées, {len(headings)} H2/3")
json.dump(out,open("/tmp/fr_placements.json","w"))
print("=== exemple type-de-cheveux ===")
for p in out.get("type-de-cheveux",{}).get("placements",[]): print("  ",p["file"],"après:",p["after_txt"][:40])
