#!/home/agent/venv/bin/python3
"""Post an approved Reddit item (comment) via the logged-in VM Chrome (CDP 9224).
Called by marketing_cli.py when Nemanja approves a reddit item ("poste #id" on WhatsApp).

Posts as a COMMENT to item.thread_ref (a thread URL). Uses old.reddit (reliable).
New-post submission (type social_post) is a TODO. Verifies by checking the comment text
appears on the page; screenshots to logs/reddit-post.png.
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
from marketing_lib import get_item, log_event, log, db
from playwright.sync_api import sync_playwright


def _old(url: str) -> str:
    if not url.startswith("http"):
        url = "https://" + url.lstrip("/")
    return url.replace("www.reddit.com", "old.reddit.com").replace("//reddit.com", "//old.reddit.com")


def post_comment(item):
    url = _old(item["thread_ref"] or "")
    body = item["body"]
    if "old.reddit.com" not in url:
        return False, f"keine gueltige Thread-URL: {url}"
    with sync_playwright() as p:
        b = p.chromium.connect_over_cdp("http://127.0.0.1:9224", timeout=15000)
        pg = b.contexts[0].new_page()
        pg.goto(url, wait_until="domcontentloaded", timeout=45000)
        pg.wait_for_timeout(1500)
        ta = pg.query_selector(".commentarea textarea[name='text']") or pg.query_selector(".commentarea textarea")
        if not ta:
            pg.screenshot(path="/home/agent/plappi-marketing/logs/reddit-post.png")
            return False, "kein Kommentarfeld (eingeloggt? Thread gesperrt?)"
        ta.click(); ta.fill(body); pg.wait_for_timeout(600)
        btn = pg.query_selector(".commentarea .usertext-buttons button.save") or pg.query_selector("button.save")
        if not btn:
            return False, "kein Save-Button"
        btn.click(); pg.wait_for_timeout(3500)
        ok = body[:45].lower() in (pg.content() or "").lower()
        pg.screenshot(path="/home/agent/plappi-marketing/logs/reddit-post.png")
        return ok, ("gepostet" if ok else "unsicher — Screenshot pruefen")


def main(item_id: int) -> int:
    it = get_item(item_id)
    if not it:
        print("item nicht gefunden"); return 2
    if it["platform"] != "reddit":
        print("kein reddit-item"); return 2
    if it["type"] != "social_comment":
        print("nur Kommentare implementiert (social_post folgt)"); return 2
    ok, msg = post_comment(it)
    if ok:
        conn = db()
        conn.execute("UPDATE items SET status='posted', sent_at=datetime('now') WHERE id=?", (item_id,))
        conn.commit(); conn.close()
        log_event(item_id, "posted", it["thread_ref"])
    log(f"reddit_post #{item_id}: {msg}", "reddit")
    print(msg)
    return 0 if ok else 1


if __name__ == "__main__":
    sys.exit(main(int(sys.argv[1])))
