#!/usr/bin/env python3
"""Replace text-type DAS FB post (today 17:00) with proper image-type post."""
import urllib.request, json, base64
from repliz_client import HEADERS, BASE
from post_das_fb import load_history, save_history, FB_DAS_ID

IMG = '/home/mantapman/.hermes/profiles/atun/workspace/das_fb_20260805.png'
ARTICLE_URL = 'https://dasindonesia.com/cara-merawat-transmisi-matic-mobil'
OLD_SCHEDULE = '6a6fe43750cb499ee50ad809'

CAPTION = """Transmisi matic itu komponen paling rumit sekaligus paling mahal kalau sampai rusak. Sayangnya, banyak yang baru sadar saat biaya perbaikannya sudah tembus puluhan juta.

Mulai dari kebiasaan kecil yang sering diabaikan. Menahan mobil di tanjakan dengan pedal gas, pindah ke R sebelum mobil benar-benar berhenti, sampai memakai oli transmisi yang tidak sesuai spesifikasi. Tiga hal ini jadi penyebab utama transmisi cepat rusak.

Padahal perawatannya sederhana: kenali jenis transmisi Anda (AT, CVT, atau DCT), ganti oli tepat jadwal, dan segera tangani gejala seperti gigi selip atau suara berisik. Jangan tunggu sampai transmisi benar-benar mati.

Konsultasikan kondisi transmisi mobil Anda ke DAS Bengkel Indonesia sebelum terlambat. Teknisi kami siap bantu diagnosis dan perawatan semua jenis transmisi.

Baca panduan lengkapnya di sini: https://dasindonesia.com/cara-merawat-transmisi-matic-mobil

#DASBengkel #TransmisiMatic #PerawatanMobil #BengkelSurabaya"""


def api(method, url):
    req = urllib.request.Request(url, headers=HEADERS, method=method)
    try:
        with urllib.request.urlopen(req) as r:
            raw = r.read()
            try:
                return r.status, json.loads(raw)
            except Exception:
                return r.status, raw.decode(errors='replace')[:200]
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode(errors='replace')[:200]


def main():
    # 1) Delete old text-type post
    st, body = api('DELETE', f'{BASE}/public/schedule/{OLD_SCHEDULE}')
    print(f'DELETE old text post {OLD_SCHEDULE}: {st}')
    if st != 200:
        # maybe already posted/deleted; continue anyway
        print('  warning:', body)

    # 2) Schedule new image post
    img_url = upload_image_to_server(IMG)
    # FIX 21/08: no base64 — image via server OpenClaw

    payload = {
        'title': '',
        'description': CAPTION,
        'topic': 'Otomotif',
        'type': 'image',
        'medias': [{'url': img_url, 'type': 'image'}],
        'meta': {'title': '', 'description': '', 'url': ''},
        'additionalInfo': {
            'isAiGenerated': False, 'isDraft': False,
            'collaborators': [], 'mentions': [],
            'music': {'id': '', 'artist': '', 'name': '', 'thumbnail': ''},
            'products': [], 'tags': []
        },
        'replies': [],
        'accountId': FB_DAS_ID,
        'scheduleAt': '2026-08-05T10:00:00.000Z',  # 17:00 WIB
    }
    body = json.dumps(payload).encode()
    req = urllib.request.Request(f'{BASE}/public/schedule', data=body, headers=HEADERS, method='POST')
    try:
        with urllib.request.urlopen(req) as r:
            result = json.loads(r.read())
            sid = result.get('scheduleId') or result.get('_id')
            print(f'✅ POST new image schedule: {sid}')
            # Update history: replace the Aug 5 text entry with proper image entry
            history = load_history()
            history['posts'] = [p for p in history['posts']
                                if p.get('schedule_id') != OLD_SCHEDULE]
            history['posts'].append({
                'date': '2026-08-05', 'time': '17:00', 'platform': 'facebook',
                'article_url': ARTICLE_URL,
                'short_desc': 'Cara merawat transmisi matic agar tidak cepat rusak — kenali jenis, ganti oli tepat jadwal, hindari kebiasaan buruk berkendara.',
                'schedule_id': sid, 'image_source': 'generated',
            })
            save_history(history)
            print('   History updated.')
            return
    except urllib.error.HTTPError as e:
        err = e.read().decode()
        print(f'❌ ERROR {e.code}: {err[:400]}')


if __name__ == '__main__':
    main()
