#!/usr/bin/env python3
"""Susun bahan jadwal 1 artikel/hari: bukti keyword (GSC) + cek halaman/artikel yang sudah ada."""
import base64, html, json, re, time, urllib.request

S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
data = json.load(open("drafts/ss_keyword_nilai.json"))   # 490 query GSC 90 hari

TOPIK = {
    "Software house / aplikasi": r"software house|perusahaan software|software design|software custom|jasa pembuatan aplikasi|aplikasi mobile|mobile app",
    "Konsultan SEO": r"konsultan seo|konsultan google seo|konsultan internet marketing|jasa konsultan",
    "Toko online / e-commerce": r"toko online|e-?commerce|marketplace|jualan online|olshop",
    "Kelola sosial media": r"social media agency|jasa sosial media|kelola (akun|instagram)|admin sosial|sosmed",
    "Training / pelatihan": r"training digital marketing|kursus digital marketing|pelatihan digital|belajar digital marketing|workshop",
    "Landing page": r"landing page",
    "Jasa SEO Sidoarjo": r"jasa seo sidoarjo|seo sidoarjo",
    "Branding agency Surabaya": r"branding agency surabaya|jasa branding surabaya|agensi branding",
    "Marketing / digital agency Surabaya": r"marketing agency surabaya|digital agency surabaya|agency surabaya|digital marketing agency surabaya",
    "Digital marketing Sidoarjo": r"digital marketing sidoarjo|digital agency sidoarjo",
    "Jasa maintenance (sudah dibuat)": r"maintenance wordpress|maintenance website",
    "Google Ads (sudah dibuat)": r"google ads|iklan google|agensi iklan|jasa iklan",
}

print("=== BUKTI KEYWORD PER TOPIK (GSC 90 hari) ===")
for nama, pola in TOPIK.items():
    cocok = sorted([h for h in data if re.search(pola, h["query"], re.I)], key=lambda x: -x["imp"])
    if not cocok:
        print(f"\n{nama}: tidak ada query")
        continue
    tot_imp = sum(c["imp"] for c in cocok)
    tot_klik = sum(c["klik"] for c in cocok)
    pos = min(c["pos"] for c in cocok)
    print(f"\n{nama}: {len(cocok)} query | {tot_imp} impresi | {tot_klik} klik | posisi terbaik {pos}")
    for c in cocok[:6]:
        print(f"   imp {c['imp']:>4} | klik {c['klik']} | pos {c['pos']:>5} | {c['query'][:54]:<56} {c['halaman'][:34]}")


def wp(path):
    r = urllib.request.Request(S + path, headers={"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"})
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=150) as x:
                return json.loads(x.read())
        except Exception:
            time.sleep(4)
    return []


print("\n\n=== URL YANG SUDAH ADA (cek dobel) ===")
items = []
for tipe in ("pages", "posts"):
    p = 1
    while True:
        d = wp(f"/wp-json/wp/v2/{tipe}?per_page=100&page={p}&status=publish,future&_fields=id,link,title")
        if not isinstance(d, list):
            break
        items += [{"tipe": tipe, **x} for x in d]
        if len(d) < 100:
            break
        p += 1
print(f"total konten: {len(items)}")
for label, pola in (("software", r"software|aplikasi|mobile-app|android"),
                    ("toko online", r"toko-online|ecommerce|e-commerce|marketplace"),
                    ("sosial media", r"social-media|sosial-media|kelola"),
                    ("training", r"training|kursus|pelatihan|belajar"),
                    ("landing page", r"landing-page"),
                    ("konsultan", r"konsultan"),
                    ("sidoarjo", r"sidoarjo")):
    cocok = [i["link"].replace(S, "") for i in items if re.search(pola, i["link"], re.I)]
    print(f"\n  [{label}] {len(cocok)} URL")
    for c in cocok[:8]:
        print(f"     {c[:76]}")
