#!/usr/bin/env python3
"""Hitung link internal yang MASUK ke tiap kandidat halaman website StudioSoft."""
import base64, json, re, urllib.request

S = "https://studiosoft.id"
AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
KANDIDAT = {
    "jasa-pembuatan-website": 2553,
    "jasa-pembuatan-website-wordpress-surabaya-terpercaya": 3483,
    "jasa-pembuatan-website-profesional-untuk-usaha-jasa-di-surabaya": 3770,
    "berapa-biaya-jasa-pembuatan-website": 7330,
    "8-paket-jasa-pembuatan-website-wordpress-surabaya-termurah-di-studiosoft": 3496,
}


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


masuk = {s: [] for s in KANDIDAT}
total_link = 0
posts, page = [], 1
while True:
    d = wp(f"/wp-json/wp/v2/posts?per_page=100&page={page}&context=edit&_fields=id,slug,content")
    posts += d
    if len(d) < 100:
        break
    page += 1
print(f"artikel diperiksa: {len(posts)}")

for p in posts:
    raw = p["content"]["raw"]
    tautan = set(re.findall(r'href="https://studiosoft\.id/([^"#?]+)', raw))
    total_link += len(tautan)
    for slug in KANDIDAT:
        if slug in tautan and p["slug"] != slug:
            masuk[slug].append(p["slug"][:50])

print(f"total link internal di seluruh artikel: {total_link}\n")
print("link MASUK ke tiap kandidat:")
for slug, asal in sorted(masuk.items(), key=lambda x: -len(x[1])):
    print(f"  {len(asal):>3} penaut | /{slug[:60]}/")
    for a in asal[:6]:
        print(f"        ← {a}")
