#!/usr/bin/env python3
"""Perbaikan harian TSLaw 20 Okt 2026: #3175 perlindungan HKI untuk UMKM.

530 -> 1.000+ kata, koreksi struktur rusak (<p><p>), dasar hukum per jenis HKI,
alur DJKI bertenggat, ketentuan pidana, tautan pilar, FAQ 5 -> 7 + skema selaras.
Dry run default. --apply menulis lewat REST API JSON.
"""
import base64, json, re, sys, time, urllib.request, urllib.error

DOM = "tslaw.id"
AUTH = base64.b64encode(b"bambangbot:EFKm EYGx VQCP Y9go ncPr uM2Y").decode()
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}
DIR = "/home/mantapman/.hermes/profiles/atun/workspace/tslaw_pemulihan/perbaikan_20261020"
POST_ID = 3175

lama = open(f"{DIR}/post_3175_SEBELUM.html").read()


def kata(html):
    t = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", html, flags=re.S | re.I)
    t = re.sub(r"<[^>]+>", " ", t)
    t = re.sub(r"&[a-z]+;", " ", t)
    return len(re.findall(r"[A-Za-z0-9][A-Za-z0-9'\-]*", t))


def bersih(html):
    t = re.sub(r"<(script|style)[^>]*>.*?</\1>", " ", html, flags=re.S | re.I)
    t = re.sub(r"<[^>]+>", " ", t)
    t = re.sub(r"&nbsp;", " ", t)
    return re.sub(r"\s+", " ", t).strip()


# ---------------------------------------------------------------- potongan lama
INTRO = ("<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 Suprianto Law Firm</strong> siap "
         "membantu UMKM melindungi aset intelektualnya.</p>")

P_INTRO2 = ("<p>Artikel ini membahas jenis HKI yang paling relevan untuk usaha kecil, dasar hukumnya, "
            "alur pendaftaran merek di DJKI, sampai kesalahan yang membuat permohonan harus diperbaiki. "
            "Rujukan pasal di bawah ini memakai undang-undang yang masih berlaku saat artikel ini "
            "diperbarui.</p>")

H2_HKI = '<h2 class="wp-block-heading">Apa Saja yang Termasuk HKI?</h2>'
UL_HKI = ("<ul class=\"wp-block-list\">\n"
          "<li><strong>Hak Cipta</strong>: karya tulis, musik, desain, software</li>\n"
          "<li><strong>Merek</strong>: nama, logo, slogan yang membedakan produk</li>\n"
          "<li><strong>Paten</strong>: invensi teknologi dan proses produksi</li>\n"
          "<li><strong>Desain Industri</strong>: tampilan produk yang khas</li>\n"
          "</ul>")

P_JANGKA = ("<p>Masa berlakunya tidak sama untuk tiap jenis. Merek terdaftar mendapat perlindungan "
            "hukum 10 tahun sejak Tanggal Penerimaan dan dapat diperpanjang untuk jangka waktu yang "
            "sama (Pasal 35 UU 20/2016 tentang Merek dan Indikasi Geografis). Hak "
            "cipta atas buku, musik, seni rupa, dan karya tulis berlaku selama hidup pencipta ditambah "
            "70 tahun, sedangkan fotografi, program komputer, dan basis data berlaku 50 tahun (Pasal "
            "58 dan Pasal 59 UU 28/2014 tentang Hak Cipta). Paten berlaku 20 tahun dan paten sederhana "
            "10 tahun sejak Tanggal Penerimaan (Pasal 22 dan Pasal 23 UU 13/2016, dengan perubahan "
            "terakhir lewat UU 65/2024 yang berlaku 28 Oktober 2024). Desain industri berlaku 10 tahun "
            "sejak Tanggal Penerimaan (Pasal 5 ayat (1) UU 31/2000).</p>")

P_DUA = ("<p>Bagi usaha kecil, dua jenis yang paling sering bersinggungan dengan kegiatan harian "
         "adalah merek dan hak cipta. Merek menempel pada nama usaha, logo, dan label kemasan. Hak "
         "cipta menempel pada foto produk, desain kemasan, konten media sosial, serta perangkat lunak "
         "kasir atau aplikasi pesanan.</p>")

H2_RELEVAN = "<h2>Jenis Kekayaan Intelektual yang Relevan untuk UMKM</h2>"
P_REL1 = ("<p>Kekayaan intelektual bukan hanya urusan perusahaan besar. Untuk UMKM, setidaknya ada "
          "empat jenis yang perlu diperhatikan: merek untuk nama dan logo usaha, hak cipta untuk "
          "konten dan desain, hak paten untuk inovasi teknis, dan desain industri untuk bentuk "
          "produk.</p>")
P_REL2 = ("<p>Dari keempatnya, merek adalah yang paling mendesak. Nama usaha yang dipakai "
          "bertahun-tahun tidak otomatis menjadi milik Anda secara hukum. Pendaftaran merek memberi "
          "hak eksklusif dan dasar hukum untuk menolak pemakaian serupa oleh pihak lain.</p>")
P_REL3 = ("<p>Ada dua jalur lain yang jarang dipakai UMKM padahal cocok untuk usaha yang berjualan "
          "bersama. Merek kolektif dipakai sekelompok pelaku usaha untuk memakai satu merek bersama, "
          "misalnya koperasi produsen di satu kabupaten. Indikasi geografis melindungi produk yang "
          "ciri khasnya ditentukan oleh lokasi, seperti kopi, garam, atau batik dari daerah tertentu. "
          "Keduanya diatur dalam UU 20/2016 yang sama.</p>")

H2_KENAPA = '<h2 class="wp-block-heading">Mengapa UMKM Harus Daftarkan HKI?</h2>'
P_KENAPA = ("<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.</p>")
P_KENAPA2 = ("<p>Dasar hukumnya tegas. Pasal 3 UU 20/2016 menyatakan hak atas merek diperoleh "
             "setelah merek tersebut terdaftar. Pemakaian lebih dulu tidak otomatis memberi hak. "
             "Yang menentukan adalah siapa yang lebih dulu mengajukan permohonan dan lolos "
             "pemeriksaan.</p>")
P_KENAPA3 = ("<p>Karena itu urutan yang aman adalah memeriksa ketersediaan merek, mengajukan "
             "permohonan, baru mencetak kemasan dalam jumlah besar. Mencetak kemasan lebih dulu "
             "membuat Anda menanggung biaya mengganti seluruh bahan promosi bila permohonan "
             "ditolak.</p>")
P_KENAPA4 = ("<p>Pendaftaran juga menolong saat usaha mengikuti tender, mengajukan kredit, atau "
             "menawarkan kemitraan. Pihak penilai biasanya meminta bukti bahwa merek yang dipakai "
             "terdaftar atas nama badan usaha, bukan sekadar dipakai sehari-hari.</p>")

H2_PROSES = '<h2 class="wp-block-heading">Proses Pendaftaran Merek</h2>'
P_PROSES = ("<p>Pendaftaran merek dilakukan melalui DJKI (Direktorat Jenderal Kekayaan Intelektual) "
            "secara online. Prosesnya meliputi: pengajuan permohonan, pemeriksaan formalitas, "
            "pengumuman, pemeriksaan substantif, dan penerbitan sertifikat.</p>")
P_PROSES2 = ("<p>Tiap tahap punya tenggat yang cukup pasti. Menurut penjelasan DJKI, pemeriksaan "
             "formalitas berlangsung 15 hari, pengumuman berlangsung 2 bulan, dan pemeriksaan "
             "substantif 150 hari. Bila tidak ada penolakan, sertifikat diterbitkan. Total waktu yang "
             "perlu disiapkan sekitar sembilan bulan.</p>")
P_PROSES3 = ("<p>Pada pemeriksaan substantif, permohonan diuji terhadap Pasal 20 dan Pasal 21 UU "
             "20/2016, termasuk ada tidaknya persamaan pada pokoknya dengan merek terdaftar atau "
             "merek terkenal. Karena itu hasil penelusuran awal menentukan apakah permohonan layak "
             "dilanjutkan atau label perlu disesuaikan lebih dulu.</p>")
P_PROSES4 = ("<p>Permohonan diajukan per kelas barang atau jasa. Satu merek yang dipakai untuk "
             "makanan sekaligus jasa katering berada di dua kelas berbeda, dan biaya dihitung per "
             "kelas. Salah menentukan kelas membuat perlindungan tidak menutup seluruh kegiatan "
             "usaha.</p>")

H2_KONS = '<h2 class="wp-block-heading">Konsekuensi Jika HKI Tidak Didaftarkan</h2>'
P_KONS = ("<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.</p>")
P_KONS2 = ("<p>Sisi pidananya juga nyata. Pasal 100 ayat (1) UU 20/2016 mengancam pidana penjara "
           "paling lama 5 tahun dan/atau denda paling banyak Rp2 miliar bagi pihak yang tanpa hak "
           "memakai merek yang sama pada keseluruhannya untuk barang atau jasa sejenis. Ayat (2) "
           "mengatur pemakaian merek yang mempunyai persamaan pada pokoknya dengan ancaman 4 tahun "
           "dan denda paling banyak Rp2 miliar.</p>")
P_KONS3 = ("<p>Pasal 102 menambah ancaman pidana kurungan paling lama 1 tahun atau denda paling "
           "banyak Rp200 juta bagi pihak yang memperdagangkan barang hasil pelanggaran. Tindak "
           "pidana ini merupakan delik aduan menurut Pasal 103, sehingga prosesnya berjalan setelah "
           "ada pengaduan dari pemilik merek yang dirugikan. Di titik inilah sertifikat menjadi "
           "syarat praktis untuk bisa mengadukan pihak lain.</p>")

H2_RISIKO = "<h2>Risiko yang Sering Terjadi</h2>"
P_RIS1 = ("<p>Pola yang sering muncul: usaha berkembang, merek jadi dikenal, lalu pihak lain "
          "mendaftarkan merek tersebut lebih dulu. Ketika itu terjadi, pemilik usaha bisa justru "
          "diposisikan sebagai pihak yang melanggar.</p>")
P_RIS2 = ("<p>Risiko lain muncul dari konten digital. Foto produk, tulisan artikel, dan desain visual "
          "yang dibuat tim sendiri tetap perlu dipastikan kepemilikannya. Kalau dibuat oleh pihak "
          "ketiga tanpa perjanjian pengalihan hak, haknya bisa tetap melekat pada pembuatnya.</p>")
P_RIS3 = ("<p>Risiko ketiga sering terlewat, yaitu kehilangan perlindungan karena tidak diperpanjang. "
          "Permohonan perpanjangan diajukan dalam jangka waktu 6 bulan sebelum berakhirnya jangka "
          "waktu perlindungan merek (Pasal 35 UU 20/2016). Merek yang telanjur berakhir masa "
          "berlakunya terbuka didaftarkan pihak lain, dan pemilik lama harus memulai proses dari "
          "awal.</p>")

H2_LANGKAH = "<h2>Langkah Praktis Melindungi Aset</h2>"
P_LANG1 = ("<p>Beberapa langkah yang bisa segera dijalankan: daftarkan merek untuk kelas yang sesuai "
           "dengan bidang usaha, buat perjanjian pengalihan hak cipta saat mempekerjakan desainer "
           "atau penulis, dan simpan bukti pemakaian merek secara teratur.</p>")
P_LANG2 = ("<p>Pemetaan kekayaan intelektual sebaiknya menjadi bagian dari perencanaan usaha, bukan "
           "tindakan setelah masalah muncul. Biaya pendaftaran jauh lebih ringan dibanding biaya "
           "sengketa.</p>")
UL_LANGKAH = ("<ul class=\"wp-block-list\">\n"
              "<li>Daftarkan merek atas nama badan usaha atau pemilik yang benar, bukan atas nama "
              "pihak yang kebetulan mengurus berkas.</li>\n"
              "<li>Simpan bukti pemakaian: foto kemasan, nota penjualan, unggahan media sosial yang "
              "bertanggal, dan materi promosi.</li>\n"
              "<li>Catat karya digital yang akan dipakai secara komersial. Pencatatan diajukan secara "
              "elektronik dengan menyertakan contoh ciptaan dan surat pernyataan kepemilikan (Pasal "
              "66 UU 28/2014).</li>\n"
              "<li>Buat perjanjian tertulis dengan desainer, fotografer, dan penulis, termasuk klausul "
              "pengalihan hak ekonomi.</li>\n"
              "<li>Catat tanggal berakhir perlindungan merek dan ajukan perpanjangan 6 bulan sebelum "
              "jatuh tempo.</li>\n"
              "<li>Periksa kembali direktori merek sebelum membuka cabang atau menawarkan "
              "waralaba.</li>\n"
              "</ul>")

H2_SALAH = "<h2>Kesalahan yang Sering Terjadi Saat Mendaftarkan Merek</h2>"
P_SALAH = ("<p>Sebagian permohonan gagal bukan karena mereknya tidak layak dilindungi, melainkan "
           "karena berkasnya keliru sejak awal. Berikut kekeliruan yang paling sering muncul.</p>")
UL_SALAH = ("<ul class=\"wp-block-list\">\n"
            "<li>Mengajukan nama usaha tanpa menelusuri merek terdaftar yang mirip lebih dulu.</li>\n"
            "<li>Memilih kelas hanya berdasar biaya paling murah, bukan kegiatan yang benar-benar "
            "dijalankan.</li>\n"
            "<li>Menulis uraian barang atau jasa terlalu umum sehingga sulit dipertahankan saat "
            "diperiksa.</li>\n"
            "<li>Mendaftarkan logo versi lama padahal label dan kemasan sudah berganti.</li>\n"
            "<li>Tidak memperbarui data pemilik setelah usaha berubah menjadi PT atau berpindah "
            "tangan.</li>\n"
            "</ul>")

H2_ADVOKAT = "<h2>Kapan Sebaiknya Melibatkan Advokat</h2>"
P_ADVOKAT = ("<p>Pendaftaran merek bisa dilakukan sendiri lewat sistem daring DJKI. Bantuan advokat "
             "lebih dibutuhkan pada tiga situasi: ketika hasil penelusuran menemukan merek serupa "
             "sehingga perlu penilaian risiko, ketika permohonan mendapat penolakan atau tanggapan "
             "dari pihak lain, dan ketika merek sudah dipakai pihak lain sehingga perlu langkah "
             "hukum. Untuk usaha yang menyiapkan waralaba atau investasi, pendampingan sejak awal "
             "membantu memastikan asetnya tercatat atas nama badan usaha yang benar. <a "
             "href=\"https://www.tslaw.id/law-firm-surabaya/\">Tim law firm Surabaya kami</a> "
             "menangani pendaftaran, tanggapan penolakan, sampai sengketa merek.</p>")

H2_SIMPUL = '<h2 class="wp-block-heading">Kesimpulan</h2>'
P_SIMPUL = ("<p>Perlindungan HKI bukan biaya, melainkan investasi jangka panjang. <a "
            "href=\"https://www.tslaw.id\">Konsultasi gratis dengan Tito Suprianto Law Firm</a> untuk "
            "mendaftarkan HKI usaha Anda.</p>")
P_SIMPUL2 = ("<p>Mulai dari satu langkah: pastikan nama usaha belum terdaftar, lalu ajukan permohonan "
             "untuk kelas yang benar. Sisanya bisa menyusul sambil usaha berjalan.</p>")

TOMBOL = ("<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n"
          "<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/6281909222026?text=Saya%20ingin%20konsultasi%20HKI\">"
          "\U0001F4AC Konsultasi Gratis via WhatsApp</a></div>\n"
          "</div>")

H2_FAQ = "<h2>Pertanyaan yang Sering Diajukan</h2>"

FAQ = [
    ("Apakah merek perlu didaftarkan?",
     "Ya, pendaftaran memberi hak eksklusif dan dasar hukum menolak pemakaian serupa oleh pihak lain."),
    ("Berapa lama perlindungan merek?",
     "Merek terdaftar dilindungi 10 tahun dan dapat diperpanjang setiap periode berikutnya."),
    ("Apakah hak cipta otomatis?",
     "Hak cipta muncul otomatis saat karya diwujudkan, tapi pencatatan membantu sebagai bukti kepemilikan."),
    ("Bagaimana kalau merek sudah dipakai orang lain?",
     "Perlu ditelusuri lebih dulu siapa pendaftar pertama. Ada mekanisme hukum yang bisa ditempuh."),
    ("Apa kelas merek yang perlu didaftarkan?",
     "Sesuaikan dengan bidang barang atau jasa yang benar-benar dijalankan. Bisa lebih dari satu kelas."),
    ("Berapa lama proses pendaftaran merek sampai sertifikat terbit?",
     "Sekitar sembilan bulan bila tidak ada penolakan: pemeriksaan formalitas 15 hari, pengumuman 2 "
     "bulan, dan pemeriksaan substantif 150 hari."),
    ("Apakah hak cipta harus dicatat ke DJKI?",
     "Tidak wajib, karena hak cipta muncul saat karya diwujudkan. Pencatatan membantu sebagai bukti "
     "awal kepemilikan bila terjadi sengketa."),
]

BLOK_FAQ = [H2_FAQ]
for q, a in FAQ:
    BLOK_FAQ.append(f"<h3>{q}</h3>\n<p>{a}</p>")
SKEMA = ("<script type=\"application/ld+json\">" +
         json.dumps({"@context": "https://schema.org", "@type": "FAQPage",
                     "mainEntity": [{"@type": "Question", "name": q,
                                     "acceptedAnswer": {"@type": "Answer", "text": a}} for q, a in FAQ]},
                    ensure_ascii=False) + "</script>")

H2_BACA = "<h2>Baca juga</h2>"
P_BACA = ("<p>Kalau topiknya berhubungan dengan kebutuhan Anda, artikel berikut membahasnya lebih "
          "dalam: <a href=\"https://www.tslaw.id/panduan-praktis-perlindungan-data-pribadi-untuk-umkm-"
          "langkah-mudah-dan-murah/\">Panduan Praktis Perlindungan Data Pribadi untuk UMKM: Langka</a>, "
          "<a href=\"https://www.tslaw.id/5-layanan-jasa-hukum-surabaya-untuk-umkm-dan-perusahaan-"
          "kecil-3/\">5 Layanan Jasa Hukum Surabaya untuk UMKM dan Perusahaan Keci</a>, <a "
          "href=\"https://www.tslaw.id/panduan-mendirikan-pt-untuk-umkm/\">Panduan Mendirikan PT untuk "
          "UMKM Langkah Tepat</a>.</p>")
P_BACA2 = ("<p>Langkah pendaftaran merek yang lebih rinci ada di <a "
           "href=\"https://www.tslaw.id/cara-daftar-merek-dagang/\">cara daftar merek dagang</a>.</p>")

BARU = "\n\n".join([INTRO, P_INTRO2, H2_HKI, UL_HKI, P_JANGKA, P_DUA,
                    H2_RELEVAN, P_REL1, P_REL2, P_REL3,
                    H2_KENAPA, P_KENAPA, P_KENAPA2, P_KENAPA3, P_KENAPA4,
                    H2_PROSES, P_PROSES, P_PROSES2, P_PROSES3, P_PROSES4,
                    H2_KONS, P_KONS, P_KONS2, P_KONS3,
                    H2_RISIKO, P_RIS1, P_RIS2, P_RIS3,
                    H2_LANGKAH, P_LANG1, P_LANG2, UL_LANGKAH,
                    H2_SALAH, P_SALAH, UL_SALAH,
                    H2_ADVOKAT, P_ADVOKAT,
                    H2_SIMPUL, P_SIMPUL, P_SIMPUL2,
                    TOMBOL,
                    *BLOK_FAQ, SKEMA,
                    H2_BACA, P_BACA, P_BACA2])

# ---------------------------------------------------------------- pemeriksaan
HILANG_DISENGAJA = {
    "Hak Cipta — karya tulis, musik, desain, software":
        "tanda pisah panjang diganti titik dua",
    "Merek — nama, logo, slogan yang membedakan produk":
        "tanda pisah panjang diganti titik dua",
    "Paten — invensi teknologi dan proses produksi":
        "tanda pisah panjang diganti titik dua",
    "Desain Industri — tampilan produk yang khas":
        "tanda pisah panjang diganti titik dua",
}


def kalimat(html):
    """Bandingkan per blok (<p>/<li>/<h2>/<h3>), bukan per kalimat: batas blok bisa
    menempelkan dua kalimat jadi satu. Paragraf bersarang dirapikan dulu."""
    x = html.replace("<p><p>", "<p>").replace("</p></p>", "</p>")
    items = re.findall(r"<(p|li|h2|h3)[^>]*>(.*?)</\1>", x, re.S)
    out = []
    for _, isi in items:
        t = bersih(isi)
        if len(t) > 10:
            out.append(t)
    return out


baru_bersih = bersih(BARU)
hilang = []
for s in kalimat(lama):
    if s in HILANG_DISENGAJA:
        continue
    if s not in baru_bersih:
        hilang.append(s)

print(f"kata: {kata(lama)} -> {kata(BARU)}")
print(f"H2: {len(re.findall(r'<h2', lama))} -> {len(re.findall(r'<h2', BARU))} | "
      f"H3: {len(re.findall(r'<h3', lama))} -> {len(re.findall(r'<h3', BARU))} | "
      f"li: {len(re.findall(r'<li', lama))} -> {len(re.findall(r'<li', BARU))}")
print(f"paragraf bersarang <p><p>: {lama.count('<p><p>')} -> {BARU.count('<p><p>')}")
KUTIP = len(re.findall("[\u2018\u2019\u201c\u201d]", BARU))
CJK = len(re.findall("[\u4e00-\u9fff]", BARU))
print(f"em dash: {BARU.count(chr(8212))} | kutip melengkung: {KUTIP} | CJK: {CJK}")
print(f"tombol WA: {BARU.count('wa.me/6281909222026')} | pilar: {BARU.count('law-firm-surabaya')} | "
      f"FAQ tampil: {len(re.findall(r'<h3>', BARU))} | item skema: {len(FAQ)}")
print(f"kalimat lama hilang: {len(hilang)}")
for s in hilang:
    print("   HILANG:", s[:160])

# skema valid + tiap pertanyaan tampil
sk = json.loads(SKEMA.split(">", 1)[1].rsplit("</script>", 1)[0])
assert sk["@type"] == "FAQPage" and len(sk["mainEntity"]) == len(FAQ)
for it in sk["mainEntity"]:
    assert it["name"] in BARU and it["acceptedAnswer"]["text"] in BARU, it["name"]
assert kata(BARU) >= 1000, "masih di bawah 1.000 kata"
assert not hilang, f"{len(hilang)} kalimat lama hilang tanpa alasan"
assert "<p><p>" not in BARU
assert "law-firm-surabaya" in BARU and "wa.me/6281909222026" in BARU
print("assert lolos: skema 7/7 tampil, >=1.000 kata, tanpa <p><p>, pilar + WA ada")

open(f"{DIR}/post_3175_SESUDAH_dryrun.html", "w").write(BARU)

if "--apply" not in sys.argv:
    print("\nDRY RUN. Tambahkan --apply untuk menulis.")
    sys.exit(0)

payload = {"content": BARU}
h = {"Authorization": f"Basic {AUTH}", "Content-Type": "application/json", **UA}
req = urllib.request.Request(f"https://{DOM}/wp-json/wp/v2/posts/{POST_ID}", data=json.dumps(payload).encode(),
                             headers=h, method="POST")
with urllib.request.urlopen(req, timeout=180) as r:
    resp = json.load(r)
    print("POST", r.status)
json.dump(resp, open(f"{DIR}/post_3175_POSTRESP.json", "w"), ensure_ascii=False, indent=1)
print("terkirim, panjang isi:", len(resp["content"]["raw"]))
