#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Dojo Ksatria — Reels IG Scheduler (klien baru 21/08/2026).
9 video suasana latihan karate di Dojo Ksatria, Balai RW 02 Ketintang Baru.
Jadwal: mulai Rabu 25/08/2026, jam 09:00 WIB, 1 video/hari.
Video & thumbnail dari server OpenClaw (https://mantapserver.tail3947bb.ts.net/).
Caption: 2 opsi (semangat & kebersamaan / nostalgia) + hashtag resmi dari Bos.
"""
import json, os, sys
from datetime import datetime, timezone, timedelta

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from repliz_client import ReplizClient, ACC

WIB = timezone(timedelta(hours=7))
ROOT = os.path.dirname(os.path.abspath(__file__))
LOG_FILE = os.path.join(ROOT, "dojo_ksatria_log.txt")
BASE_URL = "https://mantapserver.tail3947bb.ts.net"

HASHTAG = ("#DojoKsatria #SenseiErwinSyauridhani #KarateSurabaya #KarateKids "
           "#KarateIndonesia #MemoriLatihan #LatihanKarate #KarateAnak "
           "#Ketintang #Surabaya #Oss")

# 9 caption — variasi dari 2 opsi yang disetujui Bos (semangat & kebersamaan / nostalgia)
CAPTIONS = [
    "Suasana latihan di Dojo Ksatria, Balai RW 02 Ketintang Baru 🥋🔥\n\n"
    "Bukan cuma belajar teknik — tapi juga disiplin, kebersamaan, dan keberanian jadi pribadi yang lebih kuat. Setiap keringat ada artinya! 💪\n\n"
    "Penasaran mau ikut latihan? Cek info selengkapnya di bio ya!\n\n" + HASHTAG,

    "Ada yang bilang latihan itu berat — tapi di Dojo Ksatria, latihan jadi rumah. 🏠\n\n"
    "Suasana latihan kami di Balai RW 02, Ketintang Baru: saling dukung, saling jaga, dan tumbuh bareng. Yang penting bukan menang, tapi berani mulai! 🙌\n\n" + HASHTAG,

    "Setiap gerakan, setiap kiai, setiap keringat — semua punya arti. 🥋\n\n"
    "Inilah suasana latihan karate di Dojo Ksatria, Ketintang Baru. Semangat Sensei Erwin Syauridhani dan para ksatria muda yang gak pernah berhenti berlatih! 💪\n\n" + HASHTAG,

    "Malam ini, Balai RW 02 Ketintang Baru berubah jadi ruang penuh semangat! 🔥\n\n"
    "Dojo Ksatria — bukan cuma tempat latihan, tapi tempat tumbuh jadi pribadi yang tangguh. Kebersamaan yang bikin semua terasa ringan! 😊\n\n" + HASHTAG,

    "Dari kecil sampai dewasa, semangat karate-nya sama: pantang menyerah! 🥋✨\n\n"
    "Ini memori latihan kami di Dojo Ksatria, Ketintang Baru. Terima kasih sudah jadi bagian dari perjalanan ini. Oss! 🙏\n\n" + HASHTAG,

    "Latihan keras hari ini, jadi ksatria yang lebih baik besok. ⚔️\n\n"
    "Suasana dojo yang hangat, saling support, dan penuh tawa — itu Dojo Ksatria, Balai RW 02 Ketintang Baru. Yuk, sama-sama tumbuh! 💪\n\n" + HASHTAG,

    "Keringat di tatami adalah bukti perjuangan. 💦🥋\n\n"
    "Dojo Ksatria mengajarkan: disiplin dulu, kebanggaan menyusul. Ini suasana latihan kami — di Balai RW 02, Ketintang Baru, Surabaya.\n\n" + HASHTAG,

    "Karate itu bukan cuma fisik — tapi mental, hati, dan kebersamaan. 🧠❤️\n\n"
    "Itulah yang kami rasakan setiap latihan di Dojo Ksatria. Satu dojo, satu keluarga, satu semangat! 🔥\n\n" + HASHTAG,

    "Kenangan latihan yang gak akan terlupakan. 📸🥋\n\n"
    "Terima kasih Dojo Ksatria, Sensei Erwin Syauridhani, dan semua yang sudah berlatih bersama di Balai RW 02, Ketintang Baru. Sampai ketemu di latihan berikutnya! Oss! 🙏\n\n" + HASHTAG,
]

START_DATE = "2026-08-25"  # Rabu
POST_TIME = "09:00"        # WIB


def log(msg):
    line = f"{datetime.now(WIB).strftime('%Y-%m-%d %H:%M:%S')} | {msg}"
    with open(LOG_FILE, "a", encoding="utf-8") as f:
        f.write(line + "\n")
    print(line)


def main(dry=False):
    client = ReplizClient()
    vids = [f"dojo_{i:02d}.mp4" for i in range(1, 10)]
    if len(vids) != len(CAPTIONS):
        log(f"❌ Jumlah video ({len(vids)}) != caption ({len(CAPTIONS)})")
        return

    ok = fail = 0
    for i, vid in enumerate(vids):
        day = datetime.strptime(START_DATE, "%Y-%m-%d").date() + timedelta(days=i)
        at = f"{day.isoformat()}T{POST_TIME}:00+07:00"
        base = vid[:-4]
        media_url = f"{BASE_URL}/{vid}"
        thumb_url = f"{BASE_URL}/{base}_thumb.jpg"
        cap = CAPTIONS[i]

        print(f"\n📅 {at} WIB — {vid}")
        if dry:
            print(f"   [DRY] {media_url}\n   caption ({len(cap)} char)")
            ok += 1
            continue

        r = client.create_schedule(
            ACC.DOJO_KSATRIA_IG, cap, at,
            title="Reels Dojo Ksatria", topic="Karate",
            type_="video",
            medias=[{"type": "video", "url": media_url, "thumbnail": thumb_url}],
        )
        sid = r.get("scheduleId") or r.get("_id") or r.get("id")
        if sid:
            ok += 1
            log(f"✅ {vid} → {sid} | {at}")
        else:
            fail += 1
            log(f"❌ {vid} → {str(r)[:200]}")

    log(f"🏁 Selesai: {ok} OK, {fail} gagal ({'DRY' if dry else 'SCHEDULE'})")


if __name__ == "__main__":
    main(dry="--dry" in sys.argv)
