#!/usr/bin/env python3
"""Batch B — meta description 22 artikel LEIT yang keyphrase-nya belum exact di awal (copy diperbaiki, isi tetap)."""
import base64, json, sys, urllib.request, urllib.error

SITE = "https://www.leitsurabaya.com"
AUTH = base64.b64encode(b"bambangbot:zibd dLIV xY8x onP9 39qL hiNr").decode()

JOBS = {
    3724: ("perbedaan TOEFL dan IELTS",
           "Perbedaan TOEFL dan IELTS dibahas lengkap: tes Inggris mana yang cocok untuk kuliah, kerja, atau beasiswa? Simak tips memilihnya di sini."),
    3721: ("belajar grammar bahasa Inggris seru",
           "Belajar grammar bahasa Inggris seru dan gak membosankan dengan metode LEIT. Kuasai tata bahasa tanpa stres dan hafalan yang bikin bosan."),
    3705: ("cara belajar bahasa Inggris otodidak",
           "Cara belajar bahasa Inggris otodidak: 10 tips efektif untuk pemula di rumah. Tanpa kursus dan tanpa guru, tetap bisa lancar dengan cara ini."),
    3690: ("metode belajar bahasa Inggris efektif",
           "Metode belajar bahasa Inggris efektif yang terbukti ilmiah: 7 pilihan. Temukan cara belajar sesuai gaya belajarmu dan hasilkan progres nyata."),
    3688: ("kursus bahasa Inggris untuk karyawan",
           "Kursus bahasa Inggris untuk karyawan makin dibutuhkan: 5 alasan karyawan butuh kemampuan Inggris untuk naik jabatan dan menaikkan gaji."),
    3686: ("persiapan study abroad",
           "Persiapan study abroad yang wajib dilakukan ada 6 hal, dari tes bahasa Inggris sampai adaptasi. Panduan lengkap kuliah ke luar negeri buat kamu."),
    3684: ("public speaking bahasa Inggris untuk remaja",
           "Public speaking bahasa Inggris untuk remaja penting buat bekal masa depan: 5 alasan kenapa skill ini wajib dimiliki generasi muda Indonesia."),
    3682: ("belajar bahasa Inggris untuk anak SD",
           "Belajar bahasa Inggris untuk anak SD bisa seru: 8 cara interaktif yang bikin anak betah dan semangat, tanpa terasa seperti sedang belajar."),
    3680: ("belajar bahasa Inggris untuk anak TK",
           "Belajar bahasa Inggris untuk anak TK sejak dini punya 7 manfaat besar. Plus tips mengenalkan bahasa Inggris pada balita dengan cara tepat."),
    3678: ("solusi bahasa Inggris cepat untuk pemula",
           "Solusi bahasa Inggris cepat untuk pemula yang ingin lancar dalam 3 bulan: 7 cara praktis plus program intensif buat kamu yang pengen cepat bisa."),
    3676: ("tips memilih kursus bahasa Inggris di Surabaya",
           "Tips memilih kursus bahasa Inggris di Surabaya untuk pemula: 10 panduan biar gak salah pilih tempat kursus yang sesuai kebutuhan dan budgetmu."),
    3674: ("kursus bahasa Inggris Surabaya Timur",
           "Kursus bahasa Inggris Surabaya Timur: 8 rekomendasi terbaik untuk semua usia, dari anak-anak sampai dewasa. Cari yang paling pas buatmu."),
    3672: ("kursus bahasa Inggris Surabaya Barat",
           "Kursus bahasa Inggris Surabaya Barat: 7 kriteria yang wajib kamu tahu sebelum memilih, biar dapat tempat les berkualitas di area Surabaya Barat."),
    3581: ("bahasa Inggris naikkan gaji",
           "Bahasa Inggris naikkan gaji sampai 50% — ini 10 alasan dan datanya. Simak dampak kemampuan bahasa Inggris buat pendapatan dan kariermu."),
    3579: ("cerita sukses kursus bahasa Inggris",
           "Cerita sukses kursus bahasa Inggris dari nol sampai lolos beasiswa — kisah nyata dari LEIT. Inspirasi buat kamu yang masih ragu mulai belajar."),
    3577: ("program Inggris LEIT Surabaya",
           "Program Inggris LEIT Surabaya ada 6 opsi, dari anak-anak sampai profesional. Bingung pilih yang mana? Cek dulu perbandingannya di sini."),
    3575: ("daftar kursus LEIT Surabaya",
           "Daftar kursus LEIT Surabaya: masih ragu? Baca dulu review lengkap, alasan kenapa LEIT jadi pilihan tepat, dan tips buat yang masih menimbang."),
    3573: ("waktu tepat belajar bahasa Inggris",
           "Waktu tepat belajar bahasa Inggris itu sekarang — jangan nunggu siap, karena siap gak pernah datang. Mulai dari langkah kecil hari ini."),
    3571: ("kursus bahasa Inggris LEIT",
           "Kursus bahasa Inggris LEIT bukan kursus biasa: metodenya gabungkan speaking, leadership, dan character building. Kenalan sama LEIT di sini."),
    3569: ("lokasi LEIT Surabaya",
           "Lokasi LEIT Surabaya ada 2 cabang strategis: Surabaya Timur dan Surabaya Barat. Dekat rumah atau kantor? Cek mana yang paling praktis buatmu."),
    3567: ("belajar bahasa Inggris 15 menit sehari",
           "Belajar bahasa Inggris 15 menit sehari cukup buat yang sibuk. Ini tips manajemen waktu belajar bahasa Inggris untuk pekerja dan mahasiswa."),
    3565: ("keunggulan LEIT Surabaya",
           "Keunggulan LEIT Surabaya: 7 alasan kenapa LEIT beda dari kursus Inggris lain. Temukan metode unik yang bikin belajar Inggris jadi efektif."),
}


def post(path, data):
    h = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0", "Content-Type": "application/json"}
    r = urllib.request.Request(SITE + path, data=json.dumps(data).encode(), headers=h, method="POST")
    try:
        with urllib.request.urlopen(r, timeout=120) as x:
            return x.status, json.loads(x.read())
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode()[:300]


apply_ = "--apply" in sys.argv
ok = bad = 0
for pid, (fk, md) in sorted(JOBS.items()):
    L = len(md)
    good = 120 <= L <= 158 and md.lower().startswith(fk.lower())
    if not good:
        bad += 1
    print(f"{'OK ' if good else 'CEK'} #{pid} len={L:>3} fk-start={'Y' if md.lower().startswith(fk.lower()) else 'N'} | {fk}")
    if apply_ and good:
        st, res = post(f"/wp-json/wp/v2/posts/{pid}", {"meta": {"_yoast_wpseo_focuskw": fk, "_yoast_wpseo_metadesc": md}})
        sfk = res.get("meta", {}).get("_yoast_wpseo_focuskw") if isinstance(res, dict) else None
        smd = res.get("meta", {}).get("_yoast_wpseo_metadesc") if isinstance(res, dict) else None
        print(f"     POST {st} | fk={'Y' if sfk else 'N'} md={'Y' if smd else 'N'}")
        ok += 1 if (st == 200 and sfk and smd) else 0

print(f"\ntotal {len(JOBS)} | lolos {len(JOBS)-bad} | perlu dicek {bad} | ter-apply {ok}")
