#!/usr/bin/env python3
"""Tarik daftar artikel publish studiosoft.id untuk memilih tautan internal."""
import base64, json, re, urllib.error, urllib.request

AUTH = base64.b64encode(b"bambangbot:q26r RePo BVy6 pwU2 F3z7 ouyl").decode()
H = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"}


def get(p):
    r = urllib.request.Request("https://studiosoft.id" + p, headers=H)
    try:
        return json.loads(urllib.request.urlopen(r, timeout=120).read())
    except urllib.error.HTTPError as e:
        print("HTTP", e.code, e.read().decode()[:200])
        return []


out = []
for page in range(1, 8):
    d = get(f"/wp-json/wp/v2/posts?per_page=100&page={page}&status=publish"
            "&_fields=id,slug,title,date")
    if not isinstance(d, list) or not d:
        break
    out += d
print("total publish:", len(out))
kw = re.compile(r"cepat|lambat|kecepatan|core web|pagespeed|page speed|teknis|mobile|ponsel|seo|website", re.I)
for p in out:
    t = re.sub("<[^>]+>", "", p["title"]["rendered"])
    if kw.search(t):
        print(p["id"], p["date"][:10], p["slug"], "|", t[:95])
json.dump(out, open("cache_ss_publish.json", "w"))
