#!/usr/bin/env python3
"""Upload image to WP Media Library and set as featured image"""
import json, base64, urllib.request, urllib.error, sys, os

WP_URL = "https://www.otomasibisnispintar.com"
USER = "Wati"
PASS = "wgwl SCV1 LDNv jl5E Z2Di oua5"
auth = base64.b64encode(f"{USER}:{PASS}".encode()).decode()

def upload_media(filepath, filename, alt_text):
    """Upload image to WP Media Library, returns media ID"""
    boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"
    
    with open(filepath, "rb") as f:
        file_data = f.read()
    
    body = b"--" + boundary.encode()
    body += b'\r\nContent-Disposition: form-data; name="file"; filename="' + filename.encode() + b'"\r\n'
    body += b"Content-Type: image/jpeg\r\n\r\n"
    body += file_data
    body += b"\r\n--" + boundary.encode() + b"--\r\n"
    
    req = urllib.request.Request(
        f"{WP_URL}/wp-json/wp/v2/media",
        data=body,
        headers={
            "Authorization": f"Basic {auth}",
            "Content-Type": f"multipart/form-data; boundary={boundary}",
            "User-Agent": "Mozilla/5.0",
            "Content-Disposition": f'attachment; filename="{filename}"'
        }
    )
    
    try:
        resp = urllib.request.urlopen(req)
        result = json.loads(resp.read())
        media_id = result["id"]
        
        # Update alt text
        update_req = urllib.request.Request(
            f"{WP_URL}/wp-json/wp/v2/media/{media_id}",
            data=json.dumps({"alt_text": alt_text}).encode(),
            headers={
                "Authorization": f"Basic {auth}",
                "Content-Type": "application/json",
                "User-Agent": "Mozilla/5.0"
            },
            method="POST"
        )
        urllib.request.urlopen(update_req)
        
        return media_id
    except urllib.error.HTTPError as e:
        print(f"  ❌ Upload error: {e.code} - {e.read().decode()[:200]}")
        return None

def set_featured(post_id, media_id):
    """Set featured image for a post"""
    req = urllib.request.Request(
        f"{WP_URL}/wp-json/wp/v2/posts/{post_id}",
        data=json.dumps({"featured_media": media_id}).encode(),
        headers={
            "Authorization": f"Basic {auth}",
            "Content-Type": "application/json",
            "User-Agent": "Mozilla/5.0"
        },
        method="POST"
    )
    try:
        resp = urllib.request.urlopen(req)
        result = json.loads(resp.read())
        print(f"  ✅ Featured image set! Post: {result['id']}, featured_media: {result.get('featured_media')}")
        return True
    except urllib.error.HTTPError as e:
        print(f"  ❌ Error: {e.code}")
        return False

# Map: (filepath, filename, alt_text) -> post_id
uploads = [
    ("/tmp/artikel1.jpg", "tanda-butuh-otomatisasi.jpg", "Tim bisnis bekerja dengan dashboard otomatisasi modern - Nucleasoft Digital Indonesia"),
    ("/tmp/artikel2.jpg", "membangun-otomatisasi-bisnis.jpg", "Langkah-langkah membangun sistem otomatisasi bisnis dari nol - Nucleasoft"),
    ("/tmp/artikel3.jpg", "ai-analisis-data-bisnis.jpg", "Kecerdasan buatan AI untuk analisis data bisnis yang mudah - Nucleasoft"),
    ("/tmp/artikel4.jpg", "integrasi-data-bisnis.jpg", "Solusi integrasi data bisnis untuk data yang lebih rapi dan terpusat - Nucleasoft"),
    ("/tmp/artikel5.jpg", "dashboard-real-time-bisnis.jpg", "Business Intelligence dashboard real-time untuk bisnis modern - Nucleasoft"),
]

post_ids = [2255, 2256, 2257, 2258, 2259]

for i, (fpath, fname, alt) in enumerate(uploads):
    print(f"📤 Upload gambar artikel {i+1} ({fname})...")
    mid = upload_media(fpath, fname, alt)
    if mid:
        print(f"   ✅ Media ID: {mid}")
        print(f"📌 Set featured image untuk post ID {post_ids[i]}...")
        set_featured(post_ids[i], mid)
    print()
