#!/usr/bin/env python3
"""Cek kepatuhan 5 artikel batch 1 terhadap standar SEO yang kita pakai."""
import base64, html, json, re, urllib.request

S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()


def wp(path):
    r = urllib.request.Request(S + path, headers={"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"})
    return json.loads(urllib.request.urlopen(r, timeout=200).read())


STANDAR = {"kata": (1250, 99999), "meta": (120, 158)}
print(f"{'id':>6} {'kata':>5} {'meta':>5} {'fk':>3} {'FAQ':>4} {'img':>4} {'alt':>4} {'kat':>4} {'tag':>4} {'link':>5} {'WA':>3} {'awal':>5}")
for pid in (7528, 7529, 7530, 7531, 7532):
    p = wp(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=id,content,meta,featured_media,categories,tags,date")
    raw = p["content"]["raw"]
    kata = len(html.unescape(re.sub(r"<[^>]+>", " ", raw)).split())
    m = p.get("meta", {})
    md = m.get("_yoast_wpseo_metadesc", "") or ""
    fk = m.get("_yoast_wpseo_focuskw", "") or ""
    faq_q = raw.count('<h3>')
    img = p.get("featured_media", 0)
    alt = ""
    if img:
        med = wp(f"/wp-json/wp/v2/media/{img}?_fields=alt_text")
        alt = med.get("alt_text", "")
    link = len(set(re.findall(r'href="https://studiosoft\.id/([^"#?]+)', raw)))
    tags = p.get("tags", [])
    awal = md.lower().startswith(fk.lower()) if fk else False
    print(f"{pid:>6} {kata:>5} {len(md):>5} {'ada' if fk else '-':>3} {faq_q:>4} "
          f"{'ada' if img else 'TIDAK':>4} {'ada' if alt else 'TIDAK':>4} {len(p.get('categories',[])):>4} "
          f"{len(tags):>4} {link:>5} {'ada' if 'ss-cta-wa' in raw else 'TIDAK':>3} {'YA' if awal else 'TIDAK':>5}")
    # daftar tag
    if tags:
        nm = wp(f"/wp-json/wp/v2/tags?include={','.join(map(str,tags))}&_fields=name")
        print(f"        tag: {', '.join(t['name'] for t in nm)}")

print("\nstandar: kata >=1250 | meta 120-158 + keyphrase di awal | fk ada | FAQ + schema | featured image + alt")
print("         kategori + tag | link internal (min 2) | tombol WA")
