#!/usr/bin/env python3
"""Upload 6 Yasma Natura articles via REST API"""
import json, urllib.request, base64, os, sys

WP_URL = "https://yasmanatura.co.id"
USER = "bambangbot"
PASS = "cdti9MwknUbjQpeB9IKtrioJ"
AUTH = base64.b64encode(f"{USER}:{PASS}".encode()).decode()
UA = "Mozilla/5.0"

def wp_post(endpoint, data):
    req = urllib.request.Request(
        f"{WP_URL}{endpoint}",
        data=json.dumps(data).encode(),
        headers={
            "Authorization": f"Basic {AUTH}",
            "Content-Type": "application/json",
            "User-Agent": UA
        },
        method="POST"
    )
    try:
        resp = json.loads(urllib.request.urlopen(req).read())
        return resp
    except urllib.error.HTTPError as e:
        return {"error": e.code, "body": e.read().decode()}

DIR = "/home/mantapman/.hermes/profiles/atun/workspace/wp-clients/yasma"

# Load all articles
for i in range(1, 7):
    fpath = os.path.join(DIR, f"artikel{i}.json")
    if not os.path.exists(fpath):
        print(f"❌ File tidak ditemukan: {fpath}")
        continue
    
    with open(fpath) as f:
        artikel = json.load(f)
    
    print(f"\n📄 Upload artikel {i}: {artikel['title']}")
    
    # Convert tag names to tag IDs
    # Map tag names to existing IDs from Yasma Natura
    tag_map = {
        'maklon': 693,  # bisnis maklon
        'minuman serbuk': 178,  # brand minuman serbuk
        'produksi minuman': 141,  # jasa produksi minuman serbuk
        'kolagen': 333,  # brand kolagen sendiri
        'glutathione': 530,  # beauty hack
        'minuman kesehatan': 450,  # bisnis minuman kesehatan
        'minuman kecantikan': 351,  # bisnis minuman kecantikan
        'bisnis ukm': 728,  # bisnis UMKM
        'bpom': 206,
        'tips bisnis': 322,  # cara memulai bisnis
        'private label': 693,  # bisnis maklon
        'oem': 693,  # bisnis maklon
        'minuman herbal': 57,  # bisnis minuman herbal
    }
    
    # Convert tag strings to IDs
    tag_ids = []
    for tag in artikel.get('tags', []):
        tag_lower = tag.lower()
        if tag_lower in tag_map:
            tag_ids.append(tag_map[tag_lower])
        else:
            # Cari partial match di map
            found = False
            for k, v in tag_map.items():
                if k in tag_lower or tag_lower in k:
                    tag_ids.append(v)
                    found = True
                    break
            if not found:
                print(f"  ⚠️  Tag '{tag}' tidak punya mapping, skip")
    
    # Remove duplicates
    tag_ids = list(set(tag_ids))
    
    payload = {
        "title": artikel["title"],
        "content": artikel["content"],
        "slug": artikel["slug"],
        "status": artikel.get("status", "draft"),
        "categories": [30],  # Produk
        "tags": tag_ids if tag_ids else [],
    }
    
    # Add meta (Yoast) if supported
    if "meta" in artikel:
        payload["meta"] = artikel["meta"]
    
    result = wp_post("/wp-json/wp/v2/posts", payload)
    
    if "error" in result:
        print(f"  ❌ ERROR {result['error']}: {result['body'][:300]}")
    elif "id" in result:
        print(f"  ✅ BERHASIL! Post ID: {result['id']}")
        print(f"  🔗 {result['link']}")
        print(f"  📊 Status: {result['status']}")
    else:
        print(f"  ❌ Gagal: {json.dumps(result, indent=2)[:500]}")
