#!/usr/bin/env python3
"""
Backfill dos campos Yoast SEO nos 5 posts do blog Borrello.
Usa dados extraídos dos SEO_META dos HTMLs originais.
"""
import base64
import json
import requests

WP_BASE = "https://franciscoborrello.com.br/wp-json/wp/v2"
WP_USER = "remoraes09@gmail.com"
WP_APP_PW = "pZSE dY02 sxgC N9KA qEza ElOx"
UA = "WordPress/6.5; https://franciscoborrello.com.br"


def auth_headers(extra=None):
    raw = f"{WP_USER}:{WP_APP_PW}".encode("utf-8")
    token = base64.b64encode(raw).decode("ascii")
    h = {
        "Authorization": f"Basic {token}",
        "User-Agent": UA,
        "Accept": "application/json",
    }
    if extra:
        h.update(extra)
    return h


POSTS = [
    {
        "id": 33386,
        "focus_keyword": "feng shui na entrada da casa",
        "title": "Feng Shui na Entrada da Casa: O Que Sua Porta Diz | Borrello",
        "meta_description": "Descubra como o feng shui na entrada da casa afeta saúde, dinheiro e relacionamentos. Tapete, espelho, iluminação e porta: ajustes práticos para hoje.",
    },
    {
        "id": 33387,
        "focus_keyword": "feng shui no quarto",
        "title": "Feng Shui no Quarto: Posição da Cama, Espelho e Cores | Borrello",
        "meta_description": "Feng shui no quarto: posição da cama, espelho, cores e eletroeletrônicos. Saiba o que perturba o sono e os relacionamentos - e como corrigir hoje.",
    },
    {
        "id": 33388,
        "focus_keyword": "plantas e feng shui",
        "title": "Plantas e Feng Shui: Espada-de-São-Jorge Afasta Visitas? | Borrello",
        "meta_description": "Plantas e feng shui: entenda o que espada-de-são-jorge, cactos e flores secas fazem na sua casa. Quais plantas ativam o chi e quais criam barreiras.",
    },
    {
        "id": 33389,
        "focus_keyword": "5 animais celestiais feng shui",
        "title": "Os 5 Animais Celestiais do Feng Shui: Guia Completo | Borrello",
        "meta_description": "Os 5 Animais Celestiais do feng shui - Tartaruga, Fênix, Dragão, Tigre e Serpente. Entenda o que cada um representa e como aplicar na sua casa hoje.",
    },
    {
        "id": 33390,
        "focus_keyword": "baguá feng shui",
        "title": "Baguá: o Mapa Energético da Sua Casa Passo a Passo | Borrello",
        "meta_description": "Aprenda a montar o baguá da sua casa passo a passo. O mapa energético do feng shui revela o que cada área diz sobre saúde, dinheiro e relacionamentos.",
    },
]


def backfill(post):
    payload = {
        "meta": {
            "_yoast_wpseo_focuskw": post["focus_keyword"],
            "_yoast_wpseo_title": post["title"],
            "_yoast_wpseo_metadesc": post["meta_description"],
            "_yoast_wpseo_opengraph-title": post["title"],
            "_yoast_wpseo_opengraph-description": post["meta_description"],
            "_yoast_wpseo_twitter-title": post["title"],
            "_yoast_wpseo_twitter-description": post["meta_description"],
        }
    }
    r = requests.post(
        f"{WP_BASE}/posts/{post['id']}",
        headers=auth_headers({"Content-Type": "application/json; charset=utf-8"}),
        data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
        timeout=60,
    )
    return r


def verify(post_id):
    r = requests.get(
        f"{WP_BASE}/posts/{post_id}",
        headers=auth_headers(),
        params={"context": "edit", "_fields": "id,meta"},
        timeout=30,
    )
    return r


def main():
    results = []
    for post in POSTS:
        print(f"\n=== Post {post['id']} - {post['focus_keyword']} ===")
        r = backfill(post)
        print(f"  POST status: {r.status_code}")
        if r.status_code not in (200, 201):
            print(f"  ERRO body: {r.text[:400]}")
            results.append({"id": post["id"], "ok": False, "body": r.text[:400]})
            continue
        v = verify(post["id"])
        vj = v.json()
        meta = vj.get("meta") or {}
        yoast = {k: v for k, v in meta.items() if k.startswith("_yoast_wpseo_")}
        print(f"  focuskw: {yoast.get('_yoast_wpseo_focuskw','')}")
        print(f"  title:   {yoast.get('_yoast_wpseo_title','')[:70]}")
        print(f"  metadesc:{yoast.get('_yoast_wpseo_metadesc','')[:70]}")
        results.append({"id": post["id"], "ok": True, "meta": yoast})
    return results


if __name__ == "__main__":
    out = main()
    print("\n===== RESUMO =====")
    print(json.dumps(out, ensure_ascii=False, indent=2))
