#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""bank_fotografi_uky.py — bank konten THREADS @ukyhandoko bertema FOTOGRAFI.

Konteks (perintah Bos 4 Okt 2026): "di threads ukyhandoko aku juga sebagai fotografer
dan bahas juga tentang fotografi". Jadi @ukyhandoko bukan cuma founder StudioSoft,
tapi juga fotografer — lane baru: Fotografi & Visual.

Aturan: caption 250-480 char (hard limit Threads 500), tanpa link, tanpa mention,
0 CJK, hashtag huruf kecil maks 4, CTA komentar di 160 char terakhir, hook bervariasi.
"""

BANK = [
{
 "id": "FOT01", "tema": "Kamera Selalu di Tas",
 "teks": """Kamera saya selalu ada di tas, bahkan waktu meeting klien.

Bukan karena mau gaya. Momen paling jujur muncul pas orang nggak sadar difoto: pasar pagi, bapak benerin motor, ibu nata dagangan.

Dari situ saya belajar baca cerita sebelum baca brief. Klien bukan cuma data, dia orang dengan rutinitas.

Kamu pernah nemu ide bisnis dari hal sepele di sekitar? Tulis di komentar. 📷

#fotografi #streetphotography #visualstorytelling""",
},
{
 "id": "FOT02", "tema": "Cahaya Jendela",
 "teks": """Dulu saya pikir foto produk bagus harus pakai lampu studio mahal.

Ternyata yang paling sering saya pakai cuma jendela. Produk ditaruh dekat jendela jam 9, sisi gelapnya dipantulkan kertas putih. Hasilnya lembut dan cepat.

Klien UMKM banyak yang sudah praktik trik ini sendiri pakai HP.

Menurut kamu, foto produk pakai HP sudah cukup? Pendapatmu di komentar ya.

#fotografi #fotoproduk #umkm""",
},
{
 "id": "FOT03", "tema": "Nunggu Momen",
 "teks": """Tiga jam saya berdiri di satu gang di Bukchon buat satu frame.

Yang saya tunggu bukan bangunan, tapi momen pas nggak ada orang lewat, cuma cahaya dan bayangan.

Tiap mau jepret selalu ada yang masuk frame. Lalu sadar: fotografi bukan soal cepat, tapi sabar nunggu waktu tepat. Bisnis juga begitu.

Kamu tim nunggu momen atau jepret dulu? Ceritakan di komentar.

#fotografi #seoul #travelphotography""",
},
{
 "id": "FOT04", "tema": "Komposisi & Framing",
 "teks": """Fotografi ngajarin saya satu hal yang kepakai terus di kerjaan: framing.

Kalau semua masuk frame, mata bingung mau lihat ke mana. Yang bagus itu berani buang, sisakan satu hal yang paling penting.

Waktu bikin halaman website saya pakai prinsip sama: satu halaman, satu pesan utama.

Setuju nggak, kebanyakan pilihan justru bikin bingung? Tulis pendapatmu di komentar.

#fotografi #komposisi #desain""",
},
{
 "id": "FOT05", "tema": "HP atau Kamera",
 "teks": """Ditanya terus: HP sekarang sebagus ini, masih perlu kamera?

Jawaban saya perlu, tapi bukan soal kualitas. Kamera bikin saya lebih lambat, dan jeda itu yang bikin mikir komposisi.

Pakai HP, tangan refleks jepret 20 kali dan pulang dapat 20 foto biasa. Pakai kamera, pulang bawa 5 frame, semua sengaja.

Kamu lebih produktif pakai alat simpel atau lengkap? Komentar di bawah ya.

#fotografi #kamera #produktivitas""",
},
{
 "id": "FOT06", "tema": "Batas Editing",
 "teks": """Sering ditanya klien: foto ini boleh diedit sampai seberapa?

Patokan saya sederhana. Edit boleh memperbaiki yang kamera salah baca: kontras, warna, gelap-terang. Jangan sampai mengubah kenyataan.

Kalau orang datang ke tempat usaha dan merasa ruangannya lebih bagus di foto daripada aslinya, kepercayaan hilang di hal kecil.

Menurut kamu batas wajar editing di mana? Tulis di komentar.

#fotografi #editing #kepercayaan""",
},
{
 "id": "FOT07", "tema": "Street & Etika",
 "teks": """Saya suka street photography, tapi ada aturan yang saya pegang.

Kalau ada momen bagus dan orangnya kelihatan, saya dekati dulu dan tunjukkan hasilnya. Sembilan dari sepuluh kali mereka senang, malah minta dikirim.

Yang saya hindari: memotret orang dalam posisi memalukan atau anak kecil tanpa izin orang tuanya.

Setuju atau punya aturan sendiri? Kasih tahu di komentar.

#fotografi #streetphotography #etika""",
},
{
 "id": "FOT08", "tema": "Golden Hour",
 "teks": """Jam kerja favorit saya sebagai fotografer bukan jam kantor.

Jam 5 sampai 6 sore. Cahaya miring, warnanya hangat, semua benda kelihatan lebih hidup.

Awalnya saya pikir cuma soal estetika. Ternyata dampaknya ke kerjaan: jam itu bikin lebih sabar nunggu dan lebih jeli lihat hal kecil.

Kerjaan yang butuh ketelitian sekarang saya kerjakan di waktu tenang. Hasilnya beda jauh.

Kamu punya jam paling produktif? Ceritakan di komentar. 📷

#fotografi #goldenhour #produktivitas""",
},
{
 "id": "FOT09", "tema": "Satu Lensa",
 "teks": """Keputusan paling mengubah cara saya motret: nekat cuma bawa satu lensa.

Awalnya karena malas bawa berat, ternyata jadi latihan bagus. Dengan pilihan terbatas, saya dipaksa mikir: kalau cuma punya satu sudut, bagaimana bikin frame ini menarik?

Prinsip sama saya pakai di kerjaan kecil. Tim dan alat terbatas bukan alasan mengeluh, justru dari situ keluar ide paling kreatif.

Kamu pernah dapat ide bagus karena keterbatasan? Share di komentar.

#fotografi #lensa35mm #kreativitas""",
},
{
 "id": "FOT10", "tema": "Foto Itu Arahan",
 "teks": """Klien saya pernah bilang: fotonya bagus, tapi nggak kayak brand kami.

Itu pelajaran mahal. Fotografi di kerjaan bukan soal cantik, tapi soal cocok. Warna, angle, dan suasana harus nyambung dengan cara brand ingin dilihat orang.

Semenjak itu sebelum motret saya tanya tiga hal: ingin orang merasa apa, siapa pembelinya, dan fotonya dipakai di mana.

Menurut kamu mana lebih penting, hasil cantik atau hasil cocok? Tulis di komentar.

#fotografi #branding #foto""",
},
{
 "id": "FOT11", "tema": "Melihat Detail",
 "teks": """Fotografi itu latihan melihat hal kecil yang orang lain lewatkan.

Daun jatuh di got, bayangan kursi kosong, tangan tukang yang kena oli. Dalam sehari kelihatan biasa saja.

Semenjak rajin memotret, saya lebih cepat menangkap masalah di kerjaan klien: tombol yang tidak jelas, kalimat yang bikin bingung.

Sepele, tapi kadang itu yang bikin orang tidak lanjut membaca.

Kamu pernah nemu masalah penting dari hal remeh? Ceritakan di komentar ya.

#fotografi #detail #webdesign""",
},
{
 "id": "FOT12", "tema": "Bikin Nyaman",
 "teks": """Memotret orang itu pekerjaan paling susah buat saya dulu.

Saya buru-buru jepret, orang jadi kaku. Wajahnya kelihatan sedang difoto, bukan sedang jadi diri sendiri.

Lalu saya ubah: ngobrol dulu, dan foto waktu orang lagi ketawa, bukan waktu diminta senyum.

Cara yang sama saya pakai waktu ketemu klien. Ngobrol keseharian dulu, baru masuk kerjaan.

Menurut kamu cara ngobrol begitu penting atau cuma buang waktu? Diskusi di komentar.

#fotografi #portrait #relasi""",
},
{
 "id": "FOT13", "tema": "Hasil Instan",
 "teks": """Hobi foto ngajarin saya tidak buru-buru, padahal sekarang semua serba instan.

Kirim foto, dibalas hitungan detik. Tapi momen yang benar-benar bagus tetap butuh waktu. Kadang pulang tangan kosong, dan itu wajar.

Di kerjaan saya terapkan hal sama. Tidak semua harus cepat. Satu tulisan rapi masih lebih berguna daripada lima tulisan tidak jelas yang terbit hari ini.

Kamu tim serba cepat atau pelan tapi rapi? Tulis di komentar.

#fotografi #kesabaran #kerja""",
},
{
 "id": "FOT14", "tema": "Before After Usaha",
 "teks": """Foto yang paling saya suka bukan foto pemandangan.

Tapi foto sebelum dan sesudah tempat usaha klien saya dulu.

Sisi kiri: tampak depan seadanya, tulisan kecil, orang lewat cepat. Sisi kanan beberapa bulan kemudian: jelas, rapi, orang mulai berhenti dan bertanya.

Dua foto itu bercerita lebih banyak dari laporan angka. Perubahan yang kelihatan mata selalu lebih meyakinkan.

Kamu punya foto usaha waktu pertama buka? Share di komentar ya.

#fotografi #umkm #beforeafter""",
},
{
 "id": "FOT15", "tema": "Dijual Sekali",
 "teks": """Fotografer sewaan pernah bilang: satu foto indah dijual sekali, satu foto benar dijual berkali-kali.

Baru saya ngerti beberapa tahun kemudian.

Foto yang sekadar indah cuma bagus untuk satu peruntukan. Foto yang benar bisa dipakai untuk website, brosur, dan banner sekaligus.

Sama seperti kerjaan lain: yang rapi fondasinya lebih hemat waktu.

Pernah ganti kerjaan lama karena fondasinya kurang rapi? Ceritakan di komentar.

#fotografi #fondasi #bisnis""",
},
]


def validasi(t: str) -> list:
    m = []
    n = len(t)
    if not (250 <= n <= 480):
        m.append(f"panjang {n} (harus 250-480)")
    ekor = t[-160:].lower()
    if not any(k in ekor for k in ["komentar", "diskusi", "pendapat", "tulis di", "share", "setuju", "menurut kamu", "menurut anda"]):
        m.append("CTA komentar tidak ada di 160 char terakhir")
    if "@" in t:
        m.append("ada mention @")
    tags = [x for x in t.split() if x.startswith("#")]
    if len(tags) > 4:
        m.append("hashtag lebih dari 4")
    for kat in tags:
        if kat[1:] != kat[1:].lower():
            m.append(f"hashtag huruf besar: {kat}")
    for ch in t:
        o = ord(ch)
        if 0x4E00 <= o <= 0x9FFF or 0x3040 <= o <= 0x30FF or 0xAC00 <= o <= 0xD7AF or 0x3000 <= o <= 0x303F:
            m.append(f"CJK: {ch}")
            break
    for bad in ["Kalau kamu bingung soal", "Saya baca artikel ini soal", "Baru baca artikel ini", "Ini penjelasan"]:
        if bad.lower() in t.lower():
            m.append(f"pembuka templat: {bad}")
    return m


if __name__ == "__main__":
    print(f"bank fotografi uky: {len(BANK)} entri\n")
    ok = 0
    for b in BANK:
        m = validasi(b["teks"])
        if m:
            print(f"❌ {b['id']} {b['tema']}: {'; '.join(m)}")
        else:
            ok += 1
            print(f"✅ {b['id']} {b['tema']} ({len(b['teks'])} char)")
    print(f"\n{ok}/{len(BANK)} lolos validasi")
