#!/usr/bin/env python3
"""TSC batch 2: perpanjang 4 artikel tipis. Sisip sebelum FAQ (atau sebelum Kesimpulan bila tanpa FAQ).
Isi lama tidak diubah; salinan disimpan dulu."""
import base64, html, json, os, re, sys, time, urllib.request, urllib.error, importlib.util

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
spec = importlib.util.spec_from_file_location("cfg_tsc", f"{WS}/cfg_tsc.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
DOM, USER, PASS = m.CFG["domain"], m.CFG["user"], m.CFG["pass"]
AUTH = base64.b64encode(f"{USER}:{PASS}".encode()).decode()
UA = {"User-Agent": "Mozilla/5.0"}
BACKUP = f"{WS}/tsc_pemulihan/salinan_tipis"
os.makedirs(BACKUP, exist_ok=True)

T = {}

T[1697] = """<h2>Seberapa jauh makanan membantu dibanding tindakan medis</h2>
<p>Perlu dipahami lebih dulu: makanan dan kebiasaan sehat berperan menjaga daya tahan tubuh, bukan menghapus virus HPV yang menyebabkan kutil. Pada banyak orang, sistem imun akhirnya mampu menekan pertumbuhan kutil sehingga kutil mengecil atau hilang sendiri, dan itu memerlukan waktu berbulan-bulan.</p>
<p>Karena itu, asupan bergizi dan istirahat cukup paling berguna sebagai pendamping. Untuk kutil yang mengganggu, bertambah banyak, atau terasa nyeri, tindakan medis tetap diperlukan. Dua pendekatan itu tidak saling menggantikan.</p>
<h2>Jenis kutil dan cara penanganannya di klinik</h2>
<p>Kutil tidak semuanya sama. Yang paling sering ditemui adalah kutil biasa (<em>veruka vulgaris</em>) di tangan, kutil telapak kaki (<em>veruka plantaris</em>) yang terasa nyeri saat berjalan, kutil filiform di sekitar wajah dan leher, serta kutil datar (<em>veruka plana</em>) yang muncul berkelompok.</p>
<p>Pilihan tindakan disesuaikan dengan jenis, ukuran, dan lokasinya. Krioterapi atau pembekuan dengan nitrogen cair sering dipakai karena praktis. Laser dan elektrokauter dipakai untuk kutil yang lebih besar, berulang, atau berada di area yang sulit ditangani. Obat topikal diberikan untuk kutil datar atau sebagai perawatan pendamping.</p>
<h2>Kapan sebaiknya tidak menunda ke dokter</h2>
<p>Segera periksa bila kutil bertambah banyak dalam hitungan minggu, terasa nyeri atau berdarah, berubah warna dan bentuk, muncul di area kelamin, atau Anda memiliki diabetes serta kondisi yang menurunkan daya tahan tubuh. Kutil di area kelamin memiliki penanganan dan pemeriksaan yang berbeda, termasuk penelusuran kontak erat.</p>
<h2>Perawatan di rumah yang aman</h2>
<p>Setelah tindakan di klinik, area yang ditangani biasanya perlu dijaga tetap kering dan bersih. Tutup dengan plester bila dianjurkan, hindari berendam atau berenang pada hari-hari pertama, dan jangan mengelupas bagian yang mengeras sendiri karena dapat menimbulkan luka baru.</p>
<p>Untuk mencegah penularan ke anggota keluarga, gunakan handuk, sandal, dan alat pribadi secara terpisah. Kutil menular melalui kontak langsung dan permukaan yang lembap, jadi area kamar mandi bersama perlu diperhatikan.</p>
<h2>Kenapa kutil bisa muncul lagi</h2>
<p>Virus penyebab kutil dapat tetap berada di lapisan kulit meski kutilnya sudah hilang secara tampilan. Karena itu kekambuhan bisa terjadi, terutama pada orang dengan daya tahan tubuh rendah atau yang sering berada di lingkungan lembap. Menjaga kebersihan, tidur cukup, dan mengelola stres menjadi bagian dari pencegahan, bukan sekadar pelengkap.</p>
"""

T[1713] = """<h2>Bahaya menangani jerawat berat dengan produk bebas</h2>
<p>Kesalahan yang paling sering terjadi pada jerawat grade III dan IV adalah mencoba produk bebas secara bergantian. Peradangan yang sudah dalam tidak dapat diselesaikan oleh produk yang dijual bebas tanpa pengawasan, sementara waktu terus berjalan. Semakin lama peradangan dibiarkan, semakin tinggi risiko munculnya bekas permanen dan jaringan parut.</p>
<p>Masalah lain adalah pemakaian produk keras secara bersamaan, misalnya eksfoliasi, retinol, dan bahan aktif lain sekaligus. Kulit menjadi iritasi, lapisan pelindungnya rusak, dan jerawat justru tampak lebih merah. Dokter biasanya menyesuaikan kombinasi bahan aktif, bukan menumpuk semuanya sekaligus.</p>
<h2>Berapa lama perbaikan mulai terlihat</h2>
<p>Siklus pergantian sel kulit berlangsung sekitar empat sampai enam minggu. Karena itu, penilaian hasil umumnya baru dilakukan setelah enam sampai delapan minggu perawatan, bukan setelah beberapa hari. Jerawat grade I–II biasanya merespons lebih cepat, sementara grade III–IV memerlukan waktu lebih panjang dan sering perlu evaluasi beberapa kali.</p>
<p>Yang bisa Anda pantau sebelum jadwal kontrol adalah arah perubahannya: apakah jumlah lesi baru berkurang, apakah peradangan tidak lagi membesar, dan apakah kulit tidak terasa perih. Tiga hal itu lebih penting daripada menilai wajah setiap hari.</p>
<h2>Cara mencegah jerawat naik ke grade yang lebih berat</h2>
<ul>
<li>Jangan memencet atau menggaruk lesi, karena dapat memicu infeksi dan bekas.</li>
<li>Jaga lapisan pelindung kulit dengan pembersih lembut dan pelembap, bukan scrub setiap hari.</li>
<li>Pakai tabir surya, termasuk saat di dalam ruangan dekat jendela, karena bekas jerawat lebih mudah menggelap bila terpapar sinar.</li>
<li>Jangan berganti produk sebelum satu rangkaian perawatan selesai dievaluasi.</li>
<li>Catat pemicu pada makanan atau siklus haid agar bisa dibahas saat konsultasi.</li>
</ul>
"""

T[1672] = """<h2>Keluhan yang paling sering ditangani</h2>
<p>Dari sisi kulit, keluhan yang paling banyak datang adalah jerawat dengan berbagai tingkat keparahan, bekas jerawat dan noda gelap, eksim serta dermatitis, alergi kulit, infeksi jamur, dan keluhan pigmentasi seperti flek. Dari sisi kelamin, penanganan mencakup keluhan menular maupun non-infeksi, dengan pemeriksaan dan penanganan yang menjaga kerahasiaan pasien.</p>
<p>Selain dua bidang itu, banyak pasien datang untuk kebutuhan estetika medis: perbaikan tekstur kulit, pori-pori, atau bekas luka. Perlu ditekankan bahwa tindakan estetika medis tetap dimulai dari pemeriksaan, bukan langsung tindakan.</p>
<h2>Pemeriksaan dan tindakan yang tersedia</h2>
<p>Pemeriksaan dilakukan untuk memastikan diagnosis, dan tidak semua pasien memerlukan pemeriksaan tambahan. Bila diperlukan, dokter dapat mengusulkan pemeriksaan penunjang sederhana seperti pemeriksaan kerokan kulit, pemeriksaan lampu khusus, atau tes alergi.</p>
<p>Untuk tindakan, pilihan yang umum di klinik kulit mencakup perawatan wajah medis, peeling, microneedling, laser untuk bekas jerawat atau pigmentasi, serta tindakan pada kutil dan lesi kulit tertentu. Pemilihan tindakan bergantung pada diagnosis, jenis kulit, dan hasil yang Anda harapkan, yang dibahas lebih dulu sebelum tindakan dijadwalkan.</p>
<h2>Yang sebaiknya disiapkan sebelum berkunjung</h2>
<p>Siapkan daftar keluhan berikut waktu kemunculannya, produk atau obat yang pernah dipakai, dan riwayat alergi. Bila Anda memiliki hasil pemeriksaan atau foto kondisi sebelumnya, bawa sebagai bahan perbandingan. Untuk keluhan kulit, sebaiknya tidak memakai riasan tebal pada area yang akan diperiksa dan tidak mencoba produk baru beberapa hari sebelum kunjungan.</p>
<h2>Cara menilai klinik kulit di Sidoarjo</h2>
<p>Ada beberapa hal yang layak diperiksa sebelum memilih tempat berobat. Pertama, siapa yang memeriksa: apakah dokter spesialis kulit dan kelamin, atau hanya terapis. Kedua, apakah setiap tindakan didahului pemeriksaan, atau langsung ditawarkan tanpa diagnosis. Ketiga, apakah rencana perawatan dijelaskan berikut jadwal evaluasinya.</p>
<p>Yang tidak kalah penting adalah kesediaan klinik menjelaskan pilihan. Pasien berhak tahu apa diagnosisnya, kenapa tindakan tertentu dipilih, dan apa alternatifnya. Klinik yang baik tidak keberatan menjawab pertanyaan seperti itu.</p>
<h2>Soal biaya dan kerahasiaan</h2>
<p>Biaya layanan kulit dan kelamin berbeda-beda tergantung jenis pemeriksaan, tindakan, dan jumlah kunjungan. Karena itu, minta penjelasan rincian sebelum tindakan dilakukan. Untuk keluhan kelamin, kerahasiaan adalah hal yang wajar ditanyakan; pastikan klinik menjelaskan bagaimana data dan hasil pemeriksaan Anda disimpan.</p>
"""

T[1662] = """<h2>Sp.DVE: artinya apa dan apa bedanya</h2>
<p>Gelar Sp.DVE adalah singkatan dari Spesialis Dermatologi dan Venereologi. Dokter dengan gelar ini menempuh pendidikan spesialis untuk menangani penyakit kulit, rambut, kuku, serta penyakit menular seksual. Bidang ini mencakup keluhan sehari-hari seperti jerawat dan eksim, sampai keluhan yang lebih jarang dan menuntut pemeriksaan lebih dalam.</p>
<p>Perbedaan utamanya terletak pada cara kerja: pemeriksaan lebih dulu, diagnosis setelahnya, baru tindakan. Pada keluhan kulit yang tampak serupa, misalnya ruam yang mirip alergi tetapi ternyata infeksi jamur, urutan ini yang menentukan apakah perawatan berjalan atau justru membaik lalu kembali lagi.</p>
<h2>Keluhan yang ditangani sehari-hari</h2>
<ul>
<li>Jerawat aktif, bekas jerawat, dan jaringan parut pada berbagai tipe kulit.</li>
<li>Eksim, dermatitis, dan alergi kulit yang sering kambuh.</li>
<li>Infeksi kulit dan kelamin, termasuk penanganan dan pemantauan kekambuhannya.</li>
<li>Keluhan pigmentasi seperti flek dan noda akibat cahaya matahari.</li>
<li>Tindakan estetika medis untuk tekstur kulit dan kulit kusam.</li>
</ul>
<h2>Menyiapkan pertanyaan sebelum konsultasi</h2>
<p>Konsultasi menjadi lebih berguna bila Anda datang dengan pertanyaan yang spesifik. Sebutkan tujuan Anda, misalnya ingin kulit lebih bersih atau ingin ruam tidak kembali lagi. Tanyakan juga perkiraan durasi perawatan, tanda yang perlu diwaspadai di rumah, serta apa yang harus dilakukan bila keluhan tidak membaik. Dengan begitu, rencana perawatan yang Anda terima bisa dinilai bersama, bukan sekadar diikuti.</p>
"""


def rest(p, method="GET", data=None):
    h = {"Authorization": f"Basic {AUTH}", **UA}
    body = None
    if data is not None:
        body = json.dumps(data).encode(); h["Content-Type"] = "application/json"
    r = urllib.request.Request(f"https://{DOM}{p}", data=body, headers=h, method=method)
    for _ in range(3):
        try:
            with urllib.request.urlopen(r, timeout=180) as x:
                return json.loads(x.read())
        except urllib.error.HTTPError as e:
            return {"__err": e.code}
        except Exception:
            time.sleep(4)
    return {}


def hitung(t):
    h = html.unescape(re.sub(r"<[^>]+>", " ", re.sub(r"<script.*?</script>", " ", t, flags=re.S)))
    return len([w for w in re.split(r"\s+", h) if w])


print("=== rencana ===")
for pid, tambahan in T.items():
    d = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=id,slug,link,content")
    raw = d.get("content", {}).get("raw", "")
    faq = re.search(r"<h2[^>]*>\s*FAQ\s*</h2>", raw, re.I)
    kes = re.search(r"<h2[^>]*>\s*Kesimpulan\s*</h2>", raw, re.I)
    print(f"   #{pid} /{d.get('slug','?')[:44]:<46} {hitung(raw):>4} → {hitung(raw) + hitung(tambahan):>4} kata | "
          f"sisip: {'FAQ' if faq else ('Kesimpulan' if kes else 'akhir')}")

if "--apply" not in sys.argv:
    print("\n(dry run — pakai --apply)")
    sys.exit(0)

print("\n=== menulis ===")
for pid, tambahan in T.items():
    d = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=id,slug,link,content")
    raw = d["content"]["raw"]
    open(f"{BACKUP}/post_{pid}.txt", "w").write(raw)
    anchor = re.search(r"<h2[^>]*>\s*FAQ\s*</h2>", raw, re.I) or re.search(r"<h2[^>]*>\s*Kesimpulan\s*</h2>", raw, re.I)
    baru = (raw[:anchor.start()] + tambahan + "\n" + raw[anchor.start():]) if anchor else (raw + "\n" + tambahan)
    res = rest(f"/wp-json/wp/v2/posts/{pid}", "POST", {"content": baru})
    cek = rest(f"/wp-json/wp/v2/posts/{pid}?context=edit&_fields=content")
    raw2 = cek.get("content", {}).get("raw", "") if isinstance(cek, dict) else ""
    print(f"   #{pid} /{d['slug'][:40]:<42} → {hitung(raw2)} kata | {'✅' if raw2 == baru else '⚠️ berbeda'}")

print("\n=== verifikasi live ===")
time.sleep(3)
for pid in T:
    d = rest(f"/wp-json/wp/v2/posts/{pid}?_fields=link")
    url = d.get("link", "")
    try:
        hh = urllib.request.urlopen(urllib.request.Request(f"{url}?v={int(time.time())}", headers=UA), timeout=90).read().decode("utf-8", "replace")
        t = re.search(r"<title>(.*?)</title>", hh, re.S)
        print(f"   {url.replace('https://www.theskincodeclinic.com', '')[:52]:<54} | judul: {t.group(1).strip()[:44] if t else '-'}")
    except Exception as e:
        print(f"   {url}: gagal {str(e)[:40]}")
