# -*- coding: utf-8 -*-
"""Completeaza meta tagurile OG/Twitter pentru share pe toate paginile site-ului."""
import os
import re

BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
OG = "https://constelatiainimii.ro/assets/poze-blog/"

PAGES = {
    "Acasa.html": "og-default.jpg",
    "hola-alicante.html": "hola-alicante-og.jpg",
    "noul-acasa.html": "noul-acasa-og.jpg",
    "povestea-mea.html": "povestea-mea-og.jpg",
    "evenimente.html": "og-default.jpg",
    "inscriere-la-eveniment.html": "og-default.jpg",
    "portfolio.html": "portfolio-og.jpg",
    "conferinta.html": "eveniment-og.jpg",
    "Termeni-si-conditii.html": "og-default.jpg",
    "Politica-de-confidentialitate.html": "og-default.jpg",
}
for ev in ["eveniment-5.html", "eveniment-11.html", "eveniment-12.html", "eveniment-13.html",
           "eveniment-15.html", "eveniment-16-23.html", "eveniment-22.html",
           "eveniment-23.html", "eveniment-28.html"]:
    PAGES[ev] = "eveniment-og.jpg"


def esc(s):
    assert '"' not in s, "ghilimele duble in text: %r" % s
    return s


def get(content, pattern):
    m = re.search(pattern, content, re.S)
    return m.group(1).strip() if m else None


for fname, img in PAGES.items():
    path = os.path.join(BASE, fname)
    with open(path, encoding="utf-8") as f:
        html = f.read()

    head = re.search(r"(?s)<head>.*?</head>", html).group(0)
    new_head = head

    title = get(head, r'property="og:title"\s+content="([^"]+)"') or \
        get(head, r"<title>([^<]+)</title>")
    desc = get(head, r'property="og:description"\s+content="([^"]+)"') or \
        get(head, r'name="description"\s+content="([^"]+)"')
    assert title and desc, "%s: lipsesc title/description" % fname
    title, desc = esc(title), esc(desc)
    img_url = OG + img

    if 'property="og:type"' in head:
        # --- pagina cu taguri OG existente: completare + inlocuire imagine ---
        # 1. inlocuieste og:image si adauga width/height/locale dupa el
        new_head = re.sub(
            r'<meta property="og:image"[^>]*>',
            '<meta property="og:image" content="%s">\n'
            '    <meta property="og:image:width" content="1200">\n'
            '    <meta property="og:image:height" content="630">\n'
            '    <meta property="og:locale" content="ro_RO">' % img_url,
            new_head, count=1)
        # 2. dupa twitter:card adauga title/description/image
        assert 'name="twitter:card"' in new_head, fname
        new_head = re.sub(
            r'(<meta name="twitter:card"[^>]*>)',
            r'\1\n    <meta name="twitter:title" content="%s">\n'
            r'    <meta name="twitter:description" content="%s">\n'
            r'    <meta name="twitter:image" content="%s">' % (title, desc, img_url),
            new_head, count=1)
    else:
        # --- pagini legale: bloc OG/Twitter complet dupa canonical ---
        block = (
            '\n\n    <meta property="og:type" content="website">\n'
            '    <meta property="og:url" content="https://constelatiainimii.ro/%s">\n'
            '    <meta property="og:title" content="%s">\n'
            '    <meta property="og:description" content="%s">\n'
            '    <meta property="og:image" content="%s">\n'
            '    <meta property="og:image:width" content="1200">\n'
            '    <meta property="og:image:height" content="630">\n'
            '    <meta property="og:locale" content="ro_RO">\n'
            '    <meta name="twitter:card" content="summary_large_image">\n'
            '    <meta name="twitter:title" content="%s">\n'
            '    <meta name="twitter:description" content="%s">\n'
            '    <meta name="twitter:image" content="%s">'
            % (fname, title, desc, img_url, title, desc, img_url))
        new_head = re.sub(r'(<link rel="canonical"[^>]*>)', r'\1' + block, new_head, count=1)

    # 3. JSON-LD: actualizeaza imaginea la cea OG (daca exista)
    new_head = re.sub(
        r'("image":\s*")https://constelatiainimii\.ro/assets/[^"]+(")',
        r'\g<1>%s\g<2>' % img_url, new_head)

    assert new_head != head, "%s: nicio modificare" % fname
    html = html.replace(head, new_head)
    with open(path, "w", encoding="utf-8") as f:
        f.write(html)
    print("OK", fname, "->", img)
