#!/usr/bin/env python3
"""Publish 5 TSC articles - step by step"""
import json, urllib.request, urllib.error, base64, os, sys, time

WP_URL = "https://www.tslaw.id"
USER = "bambangbot"
PASS = "EFKm EYGx VQCP Y9go ncPr uM2Y"
AUTH = base64.b64encode(f"{USER}:{PASS}".encode()).decode()
UA = "Mozilla/5.0"

def api(method, path, data=None):
    url = f"{WP_URL}/wp-json/wp/v2/{path}"
    headers = {"Authorization": f"Basic {AUTH}", "User-Agent": UA}
    if data is not None:
        headers["Content-Type"] = "application/json"
        data = json.dumps(data).encode()
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
    try:
        resp = json.loads(urllib.request.urlopen(req).read())
        return resp
    except urllib.error.HTTPError as e:
        print(f"  ❌ {e.code}: {e.read().decode()[:200]}")
        return None

def upload_media(filepath, filename, alt):
    with open(filepath, "rb") as f:
        file_data = f.read()
    boundary = "----Boundary7MA4YW"
    body = b"--" + boundary.encode()
    body += b'\r\nContent-Disposition: form-data; name="file"; filename="' + filename.encode() + b'"\r\n'
    body += b"Content-Type: image/webp\r\n\r\n"
    body += file_data
    body += b"\r\n--" + boundary.encode() + b"--\r\n"
    req = urllib.request.Request(
        f"{WP_URL}/wp-json/wp/v2/media",
        data=body,
        headers={
            "Authorization": f"Basic {AUTH}",
            "Content-Type": f"multipart/form-data; boundary={boundary}",
            "User-Agent": UA,
            "Content-Disposition": f'attachment; filename="{filename}"'
        }
    )
    try:
        resp = json.loads(urllib.request.urlopen(req).read())
        mid = resp["id"]
        # Set alt text
        api("POST", f"media/{mid}", {"alt_text": alt})
        return mid
    except Exception as e:
        print(f"  ❌ Upload error: {e}")
        return None

WA_NUM = "6285334199166"

POSTS = [
    {
        "file": "/tmp/tsc1.webp",
        "img_name": "tslaw_pendirian_pt.webp",
        "alt": "Pendirian PT di Indonesia bersama pengacara profesional - Tito Supriyanto Law Firm",
        "title": "Panduan Lengkap Pendirian PT untuk Pelaku Usaha di Indonesia",
        "slug": "panduan-pendirian-pt-untuk-pelaku-usaha",
        "excerpt": "Panduan lengkap cara mendirikan PT di Indonesia dari akta notaris hingga NIB. Proses mudah dan legal bersama Tito Supriyanto Law Firm.",
        "categories": [14],
        "tags": [97, 90, 84, 83, 85],
        "wa_text": "konsultasi pendirian PT",
        "content_blocks": [
            ("p", "Mendirikan PT (Perseroan Terbatas) kini semakin mudah berkat kebijakan Omnibus Law dan OSS RBA. Tapi masih banyak pelaku usaha yang bingung dengan prosedur dan dokumen yang dibutuhkan. Tenang, <strong>Tito Supriyanto Law Firm</strong> siap membantu Anda melewati setiap tahapan dengan lancar."),
            ("h2", "Apa Itu PT dan Kenapa Harus PT?"),
            ("p", "PT adalah badan hukum yang memberikan perlindungan tanggung jawab terbatas kepada pemiliknya. Artinya, aset pribadi Anda aman jika perusahaan mengalami masalah. Selain itu, PT juga lebih dipercaya mitra bisnis dan lembaga keuangan."),
            ("h2", "Langkah-Langkah Mendirikan PT"),
            ("h3", "1. Siapkan Dokumen Pendiri"),
            ("p", "Dokumen utama berupa KTP dan NPWP para pendiri serta pengurus (direksi dan komisaris). Minimal dua orang pendiri diperlukan untuk mendirikan PT."),
            ("h3", "2. Buat Akta Pendirian di Notaris"),
            ("p", "Akta pendirian berisi anggaran dasar, maksud dan tujuan, susunan pengurus, serta modal dasar dan setor. Notaris akan membantu merumuskan seluruh klausul sesuai kebutuhan bisnis Anda."),
            ("h3", "3. Ajukan Pengesahan ke Kemenkumham"),
            ("p", "Setelah akta ditandatangani, notaris akan mengajukan pengesahan badan hukum melalui Sistem Administrasi Badan Hukum (SABH). Proses ini biasanya memakan waktu 1-3 hari kerja."),
            ("h3", "4. Urus NIB dan Izin Usaha"),
            ("p", "Setelah mendapat pengesahan Kemenkumham, langkah selanjutnya adalah mengurus Nomor Induk Berusaha (NIB) melalui OSS RBA. NIB sekaligus berfungsi sebagai <strong>izin usaha dan izin lokasi</strong> untuk kegiatan bisnis berisiko rendah."),
            ("h2", "Kesalahan Umum yang Harus Dihindari"),
            ("ul", ["Modal dasar terlalu kecil sehingga sulit ekspansi", "Klausul anggaran dasar tidak sesuai kebutuhan bisnis", "Susunan pemegang saham tidak jelas", "Tidak memperbarui data perusahaan jika ada perubahan"]),
            ("h2", "Kesimpulan"),
            ("p", 'Mendirikan PT tidak perlu rumit jika didampingi pengacara profesional. <a href="https://www.tslaw.id">Tito Supriyanto Law Firm</a> siap mendampingi Anda dari awal hingga PT resmi berdiri dan beroperasi.'),
        ]
    },
    {
        "file": "/tmp/tsc2.webp",
        "img_name": "tslaw_kontrak_bisnis.webp",
        "alt": "Pentingnya kontrak bisnis untuk melindungi transaksi usaha - Tito Supriyanto Law Firm",
        "title": "Pentingnya Kontrak Bisnis dalam Setiap Transaksi Usaha",
        "slug": "pentingnya-kontrak-bisnis-transaksi-usaha",
        "excerpt": "Kontrak bisnis yang baik melindungi usaha Anda dari sengketa. Pelajari elemen penting kontrak dan cara membuatnya bersama pengacara profesional.",
        "categories": [14],
        "tags": [4, 50, 5, 49, 48],
        "wa_text": "konsultasi kontrak bisnis",
        "content_blocks": [
            ("p", "Banyak pebisnis menganggap kontrak hanya formalitas, padahal <strong>kontrak bisnis adalah perisai hukum utama</strong> yang melindungi perusahaan Anda. Tanpa kontrak yang baik, sengketa bisnis bisa muncul kapan saja dan merugikan usaha Anda."),
            ("h2", "Mengapa Kontrak Bisnis Itu Penting?"),
            ("p", "Kontrak bisnis bukan sekadar dokumen hukum. Ini alat yang mengatur hak, kewajiban, dan konsekuensi bagi semua pihak. Dengan kontrak yang jelas, Anda bisa menghindari kesalahpahaman, melindungi kepentingan bisnis, dan punya dasar hukum kuat jika terjadi sengketa."),
            ("h2", "Elemen Penting dalam Kontrak Bisnis"),
            ("ul", ["<strong>Para Pihak</strong> — identitas lengkap semua pihak yang terikat", "<strong>Objek Perjanjian</strong> — barang atau jasa yang menjadi transaksi", "<strong>Hak dan Kewajiban</strong> — jelas dan terukur masing-masing pihak", "<strong>Jangka Waktu</strong> — kapan kontrak mulai dan berakhir", "<strong>Nilai Transaksi</strong> — jumlah dan cara pembayaran", "<strong>Penyelesaian Sengketa</strong> — pilihan litigasi atau mediasi", "<strong>Force Majeure</strong> — kondisi di luar kendali para pihak"]),
            ("h2", "Jenis Kontrak yang Sering Digunakan"),
            ("p", "Dari kontrak jual-beli, sewa-menyewa, kerja sama, hingga perjanjian kerja — semuanya butuh drafting yang cermat. <strong>Tito Supriyanto Law Firm</strong> berpengalaman dalam menyusun berbagai jenis kontrak bisnis untuk kebutuhan usaha Anda."),
            ("h2", "Akibat Tidak Punya Kontrak"),
            ("p", "Tanpa kontrak, Anda bergantung pada kata sepakat lisan yang sulit dibuktikan. Sengketa bisnis sering terjadi karena salah satu pihak ingkar janji dan tidak ada bukti tertulis. Biaya pengacara bisa lebih besar daripada nilai transaksi itu sendiri."),
            ("h2", "Kesimpulan"),
            ("p", 'Kontrak bisnis bukan biaya, melainkan investasi. <a href="https://www.tslaw.id">Konsultasikan kontrak bisnis Anda</a> dengan pengacara profesional agar usaha Anda terlindungi.'),
        ]
    },
    {
        "file": "/tmp/tsc3.webp",
        "img_name": "tslaw_sengketa_tanah.webp",
        "alt": "Penyelesaian sengketa tanah secara hukum - Tito Supriyanto Law Firm",
        "title": "Cara Mengurus Sengketa Tanah Secara Hukum di Indonesia",
        "slug": "cara-mengurus-sengketa-tanah-secara-hukum",
        "excerpt": "Sengketa tanah sering terjadi di Indonesia. Pelajari langkah hukum yang tepat untuk menyelesaikannya bersama pengacara properti berpengalaman.",
        "categories": [14],
        "tags": [37, 55, 38, 54, 35, 40, 36, 39],
        "wa_text": "konsultasi sengketa tanah",
        "content_blocks": [
            ("p", "Sengketa tanah masih menjadi salah satu masalah hukum yang paling sering terjadi di Indonesia. Mulai dari sertifikat ganda, batas tanah tidak jelas, hingga warisan yang belum dibagi. <strong>Mengurus sengketa tanah butuh pendampingan hukum yang tepat</strong> karena menyangkut aset bernilai tinggi."),
            ("h2", "Penyebab Sengketa Tanah yang Paling Umum"),
            ("ul", ["Sertifikat ganda atau tumpang tindih kepemilikan", "Batas tanah tidak jelas antara tetangga", "Warisan belum dibagi secara hukum", "Jual beli tanah di bawah tangan tanpa akta", "Hak ulayat versus hak milik perorangan"]),
            ("h2", "Langkah Hukum Penyelesaian Sengketa Tanah"),
            ("h3", "1. Mediasi"),
            ("p", "Langkah pertama adalah mediasi antara para pihak. Banyak sengketa tanah bisa diselesaikan secara damai tanpa pengadilan. BPN dan pengadilan biasanya mewajibkan mediasi sebelum lanjut ke persidangan."),
            ("h3", "2. Gugatan ke Pengadilan Negeri"),
            ("p", "Jika mediasi gagal, langkah selanjutnya adalah mengajukan gugatan perdata ke Pengadilan Negeri. <strong>Kantor pengacara berpengalaman</strong> akan menyusun gugatan dengan bukti-bukti yang kuat."),
            ("h3", "3. Banding, Kasasi, dan PK"),
            ("p", "Jika tidak puas dengan putusan, Anda bisa mengajukan banding ke Pengadilan Tinggi, kasasi ke Mahkamah Agung, atau Peninjauan Kembali (PK) dalam kondisi tertentu."),
            ("h2", "Dokumen yang Perlu Disiapkan"),
            ("p", "Sertifikat asli, Akta Jual Beli (AJB), Surat Pemberitahuan Pajak (SPPT PBB), dan bukti penguasaan fisik tanah. Semakin lengkap dokumen, semakin kuat posisi hukum Anda."),
            ("h2", "Kesimpulan"),
            ("p", 'Sengketa tanah bisa diselesaikan jika Anda tahu langkah yang tepat. Jangan tangani sendiri — <a href="https://www.tslaw.id">konsultasikan dengan pengacara profesional</a>.'),
        ]
    },
    {
        "file": "/tmp/tsc4.webp",
        "img_name": "tslaw_hki_umkm.webp",
        "alt": "Perlindungan Hak Kekayaan Intelektual untuk UMKM - Tito Supriyanto Law Firm",
        "title": "Perlindungan Hukum Hak Kekayaan Intelektual untuk UMKM",
        "slug": "perlindungan-hukum-hak-kekayaan-intelektual-umkm",
        "excerpt": "HKI penting untuk UMKM. Lindungi merek, desain produk, dan hak cipta usaha Anda dari pencurian dan penyalahgunaan oleh pihak lain.",
        "categories": [14],
        "tags": [59, 13, 51, 28, 16],
        "wa_text": "konsultasi HKI",
        "content_blocks": [
            ("p", "Banyak pelaku UMKM yang belum sadar pentingnya <strong>perlindungan Hak Kekayaan Intelektual (HKI)</strong>. Padahal, merek dan produk yang sudah dikenal bisa dicuri oleh pihak lain dan dipasarkan atas nama mereka. <strong>Tito Supriyanto Law Firm</strong> siap membantu UMKM melindungi aset intelektualnya."),
            ("h2", "Apa Saja yang Termasuk HKI?"),
            ("ul", ["<strong>Hak Cipta</strong> — karya tulis, musik, desain, software", "<strong>Merek</strong> — nama, logo, slogan yang membedakan produk", "<strong>Paten</strong> — invensi teknologi dan proses produksi", "<strong>Desain Industri</strong> — tampilan produk yang khas"]),
            ("h2", "Mengapa UMKM Harus Daftarkan HKI?"),
            ("p", "Tanpa pendaftaran HKI, merek dan produk Anda tidak memiliki perlindungan hukum. Siapa pun bisa menggunakan nama atau desain produk Anda tanpa konsekuensi. Pendaftaran HKI juga <strong>meningkatkan nilai jual bisnis</strong> dan memudahkan akses permodalan."),
            ("h2", "Proses Pendaftaran Merek"),
            ("p", "Pendaftaran merek dilakukan melalui DJKI (Direktorat Jenderal Kekayaan Intelektual) secara online. Prosesnya meliputi: pengajuan permohonan, pemeriksaan formalitas, pengumuman, pemeriksaan substantif, dan penerbitan sertifikat."),
            ("h2", "Konsekuensi Jika HKI Tidak Didaftarkan"),
            ("p", "Ada banyak kasus UMKM yang kehilangan mereknya karena didaftarkan oleh pihak lain lebih dulu. Akibatnya, mereka harus <strong>berganti nama atau membayar royalti</strong> untuk menggunakan merek mereka sendiri."),
            ("h2", "Kesimpulan"),
            ("p", 'Perlindungan HKI bukan biaya, melainkan investasi jangka panjang. <a href="https://www.tslaw.id">Konsultasi gratis dengan Tito Supriyanto Law Firm</a> untuk mendaftarkan HKI usaha Anda.'),
        ]
    },
    {
        "file": "/tmp/tsc5.webp",
        "img_name": "tslaw_konsultasi_hukum.webp",
        "alt": "Konsultasi hukum dengan pengacara profesional - Tito Supriyanto Law Firm",
        "title": "Konsultasi Hukum: Kapan dan Mengapa Anda Membutuhkannya",
        "slug": "konsultasi-hukum-kapan-dan-mengapa",
        "excerpt": "Konsultasi hukum membantu Anda mengambil keputusan bisnis yang tepat. Ketahui kapan waktu yang tepat untuk berkonsultasi dengan pengacara.",
        "categories": [14],
        "tags": [46, 43, 42, 47, 66, 88, 82],
        "wa_text": "konsultasi hukum",
        "content_blocks": [
            ("p", "Banyak orang baru mencari pengacara setelah masalah hukum terjadi. Padahal, <strong>konsultasi hukum preventif jauh lebih efektif dan murah</strong> daripada menangani masalah setelah muncul. <a href=\"https://www.tslaw.id\">Tito Supriyanto Law Firm</a> menyediakan layanan konsultasi hukum untuk berbagai kebutuhan."),
            ("h2", "Kapan Anda Perlu Konsultasi Hukum?"),
            ("ul", ["Sebelum menandatangani kontrak bisnis", "Menjelang pendirian PT atau badan usaha lain", "Ada sengketa dengan mitra bisnis atau pelanggan", "Mendapat somasi atau gugatan hukum", "Ingin mendaftarkan merek atau HKI", "Butuh perlindungan hukum untuk bisnis online"]),
            ("h2", "Manfaat Konsultasi Hukum"),
            ("p", "Dengan konsultasi hukum, Anda bisa memahami risiko bisnis, menyusun strategi hukum, menghindari pelanggaran regulasi, dan membuat keputusan yang tepat. Semua dilakukan sebelum masalah muncul."),
            ("h2", "Konsultasi Hukum Itu Mahal? Mitos!"),
            ("p", "Banyak orang mengira konsultasi hukum mahal. Faktanya, <strong>biaya konsultasi jauh lebih kecil dibanding potensi kerugian</strong> jika masalah tidak ditangani. Tito Supriyanto Law Firm menawarkan konsultasi awal gratis untuk membantu Anda."),
            ("h2", "Apa yang Perlu Disiapkan?"),
            ("ul", ["Dokumen terkait (kontrak, sertifikat, surat-surat)", "Kronologi kejadian secara tertulis", "Pertanyaan spesifik yang ingin ditanyakan"]),
            ("h2", "Kesimpulan"),
            ("p", 'Jangan tunggu masalah membesar. <a href="https://www.tslaw.id">Konsultasi hukum sekarang</a> bersama Tito Supriyanto Law Firm untuk melindungi bisnis dan hak Anda.'),
        ]
    }
]

def build_content(blocks):
    html = ""
    for block in blocks:
        tag = block[0]
        text = block[1]
        if tag == "p":
            html += f'<!-- wp:paragraph --><p>{text}</p><!-- /wp:paragraph -->'
        elif tag in ("h2", "h3"):
            html += f'<!-- wp:heading --><{tag}>{text}</{tag}><!-- /wp:heading -->'
        elif tag == "ul":
            items = "".join(f'<li>{item}</li>' for item in text)
            html += f'<!-- wp:list --><ul>{items}</ul><!-- /wp:list -->'
    # Add WA button
    html += f'<!-- wp:buttons --><div class="wp-block-buttons"><!-- wp:button --><div class="wp-block-button"><a class="wp-block-button__link has-white-color has-vivid-green-cyan-background-color has-text-color has-background has-link-color wp-element-button" href="https://wa.me/{WA_NUM}?text=Saya%20ingin%20{block[1].replace(" ", "%20") if block[0]=="wa_text" else "konsultasi%20hukum"}">💬 Konsultasi Gratis via WhatsApp</a></div><!-- /wp:button --></div><!-- /wp:buttons -->'
    return html

for i, post in enumerate(POSTS):
    print(f"\n{'='*50}")
    print(f"📝 Artikel {i+1}: {post['title']}")
    
    # 1. Upload media
    print(f"📤 Upload gambar {post['img_name']}...")
    mid = upload_media(post["file"], post["img_name"], post["alt"])
    if not mid:
        print("  ⏭️ Skip artikel ini")
        continue
    print(f"   ✅ Media ID: {mid}")
    
    # 2. Build content with WA button using proper wa_text per article
    wa_text_encoded = post["wa_text"].replace(" ", "%20")
    html = ""
    for block in post["content_blocks"]:
        tag, text = block
        if tag == "p":
            html += f'<!-- wp:paragraph --><p>{text}</p><!-- /wp:paragraph -->'
        elif tag in ("h2", "h3"):
            html += f'<!-- wp:heading --><{tag}>{text}</{tag}><!-- /wp:heading -->'
        elif tag == "ul":
            items = "".join(f'<li>{item}</li>' for item in text)
            html += f'<!-- wp:list --><ul>{items}</ul><!-- /wp:list -->'
    html += f'<!-- wp:buttons --><div class="wp-block-buttons"><!-- wp:button --><div class="wp-block-button"><a class="wp-block-button__link has-white-color has-vivid-green-cyan-background-color has-text-color has-background has-link-color wp-element-button" href="https://wa.me/{WA_NUM}?text=Saya%20ingin%20{wa_text_encoded}">💬 Konsultasi Gratis via WhatsApp</a></div><!-- /wp:button --></div><!-- /wp:buttons -->'
    
    # 3. Publish post
    post_data = {
        "title": post["title"],
        "content": html,
        "slug": post["slug"],
        "excerpt": post["excerpt"],
        "status": "publish",
        "categories": post["categories"],
        "tags": post["tags"],
        "featured_media": mid,
    }
    
    print(f"📌 Publish artikel...")
    result = api("POST", "posts", post_data)
    if result:
        print(f"   ✅ ID: {result['id']} | {result['link']}")
    else:
        print(f"   ❌ Gagal publish")
    
    time.sleep(1)

print(f"\n{'='*50}")
print("✅ SELESAI! 5 artikel TSC dipublish")
