#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Gambar unggulan + fokus kata kunci Yoast untuk draf artikel tanah waris tslaw.id (#3698).

Gambar unggulan diambil dari frame video TS Law sendiri (bukan gambar hasil generate),
dipotong 1200x630 supaya pas kartu berbagi dan Google Discover.
"""
import base64
import json
import os
import subprocess
import sys

sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
import tslaw_wp as T  # noqa: E402
from repliz_client import HEADERS, BASE  # noqa: E402,F401

POST = 3698
SRC = "/home/mantapman/.hermes/profiles/atun/workspace/openclaw-img/tslaw_video_tanah_waris_1009_poster.jpg"
OUT = "/tmp/tslaw_tanah_waris_featured.jpg"
JUDUL = "Tanah waris dijual tanpa persetujuan ahli waris"
ALT = "Ilustrasi video: penjelasan jual beli tanah waris tanpa persetujuan ahli waris"
FOKUS = "jual beli tanah waris tanpa persetujuan ahli waris"

# 1) potong 1080x567 lalu skala ke 1200x630
subprocess.run(["ffmpeg", "-v", "error", "-i", SRC, "-vf",
                "crop=1080:567:0:450,scale=1200:630", "-q:v", "2", "-y", OUT], check=True)
print("potong selesai:", OUT, os.path.getsize(OUT), "byte")

# 2) unggah ke media tslaw.id
namafile = "tslaw-tanah-waris-dijual-sepihak.jpg"
with open(OUT, "rb") as f:
    data = f.read()
r = T.session().post(f"{T.BASE}/media", data=data, timeout=T.TIMEOUT,
                     headers={"Content-Disposition": f'attachment; filename="{namafile}"',
                              "Content-Type": "image/jpeg"})
if r.status_code >= 400:
    sys.exit(f"unggah GAGAL {r.status_code}: {r.text[:300]}")
m = r.json()
mid = m["id"]
print(f"media #{mid} {m.get('source_url')}")

# 3) alt text + pasang sebagai gambar unggulan
r = T.session().post(f"{T.BASE}/media/{mid}", json={"alt_text": ALT, "caption": ALT}, timeout=T.TIMEOUT)
print("set alt:", r.status_code)

r = T.session().post(f"{T.BASE}/posts/{POST}", json={
    "featured_media": mid,
    "meta": {"_yoast_wpseo_focuskw": FOKUS},
}, timeout=T.TIMEOUT)
if r.status_code >= 400:
    print(f"set featured gagal {r.status_code}: {r.text[:200]}")
else:
    print("featured_media + fokus keyword:", r.status_code)

# 4) baca balik
j = T.ambil_post(POST)
print(f"\nbaca-balik #{POST}: status={j.get('status')} slug={j.get('slug')}")
print(f"  featured_media={j.get('featured_media')}")
try:
    mm = T.get(f"media/{j.get('featured_media')}", {"context": "edit",
                                                    "_fields": "id,source_url,alt_text"}).json()
    print(f"  media: {mm.get('source_url')} | alt: {mm.get('alt_text')}")
    uji = subprocess.run(["curl", "-4", "-s", "-o", "/dev/null", "-w", "%{http_code}",
                          "--max-time", "60", mm.get("source_url")], capture_output=True, text=True)
    print(f"  HTTP gambar: {uji.stdout.strip()}")
except Exception as e:
    print("  gagal baca media:", e)
print(f"  panjang isi: {len(j.get('_raw') or '')} char")
