#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Check featured image sizing on multiple posts."""
from pathlib import Path
from playwright.sync_api import sync_playwright

URLS = [
    "https://franciscoborrello.com.br/feng-shui/5-mitos-sobre-feng-shui-que-voce-ainda-acredita/",
    "https://franciscoborrello.com.br/feng-shui/feng-shui-no-home-office-ergonomia-foco-e-prosperidade/",
    "https://franciscoborrello.com.br/feng-shui/feng-shui-na-cozinha-o-fogao-e-o-ima-da-prosperidade/",
    "https://franciscoborrello.com.br/feng-shui/plantas-que-protegem-a-casa-de-energias-densas-e-onde-colocar/",
    "https://franciscoborrello.com.br/geobiologia/radiestesia-radionica-e-geobiologia-qual-a-diferenca/",
    "https://franciscoborrello.com.br/artigos/radiestesia/como-usar-o-pendulo-de-radiestesia-guia-pratico-para-comecar/",
]

OUT = Path("/opt/mia/workspace/temp/wp_preview_screenshots")

UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

with sync_playwright() as p:
    b = p.chromium.launch()
    ctx = b.new_context(viewport={"width": 1440, "height": 900}, user_agent=UA)

    for url in URLS:
        page = ctx.new_page()
        slug = url.rstrip("/").split("/")[-1][:30]
        try:
            page.goto(url, wait_until="networkidle", timeout=45000)
            page.wait_for_timeout(1500)
            info = page.evaluate("""
            () => {
                // procura imagem grande no topo (featured)
                const imgs = document.querySelectorAll('img');
                for (const img of imgs) {
                    const rect = img.getBoundingClientRect();
                    if (rect.width > 300 && rect.top < 1200) {
                        return {
                            rect: {x: Math.round(rect.left), y: Math.round(rect.top), w: Math.round(rect.width), h: Math.round(rect.height)},
                            nat: {w: img.naturalWidth, h: img.naturalHeight},
                            fit: getComputedStyle(img).objectFit,
                            pos: getComputedStyle(img).objectPosition,
                            src: img.src.substring(0, 120),
                        };
                    }
                }
                return null;
            }
            """)
            if info:
                natR = info['nat']['w'] / info['nat']['h']
                contR = info['rect']['w'] / info['rect']['h']
                print(f"{slug}")
                print(f"  container: {info['rect']['w']}x{info['rect']['h']} (ratio {contR:.2f})")
                print(f"  natural  : {info['nat']['w']}x{info['nat']['h']} (ratio {natR:.2f})")
                print(f"  fit={info['fit']} pos={info['pos']}")
                print(f"  src: {info['src']}")
            else:
                print(f"{slug}: sem featured")
        except Exception as e:
            print(f"{slug}: erro {e}")
        finally:
            page.close()

    b.close()
