import os
import sys
import time
from pathlib import Path
from playwright.sync_api import sync_playwright

if hasattr(sys.stdout, 'reconfigure'):
    sys.stdout.reconfigure(encoding='utf-8')

VIDEO_PATH = str(Path("content/shorts/ep2_short_2.mp4").resolve())
print(f"Target video path: {VIDEO_PATH}")

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp("http://127.0.0.1:9224")
    page = browser.contexts[0].pages[0]

    cdp = page.context.new_cdp_session(page)
    print("CDP session established!")

    # 1. Get document
    doc = cdp.send("DOM.getDocument")
    root_node_id = doc["root"]["nodeId"]

    # 2. Query selector for video input
    res = cdp.send("DOM.querySelectorAll", {
        "nodeId": root_node_id,
        "selector": "input[type='file'][accept*='video']"
    })
    node_ids = res.get("nodeIds", [])
    print(f"Found {len(node_ids)} video file input nodeIds in DOM: {node_ids}")

    if node_ids:
        target_node_id = node_ids[0]
        print(f"Setting file on nodeId {target_node_id} via native CDP DOM.setFileInputFiles...")
        cdp.send("DOM.setFileInputFiles", {
            "files": [VIDEO_PATH],
            "nodeId": target_node_id
        })
        print("✅ Native CDP DOM.setFileInputFiles succeeded instantly!")

        # Also trigger change event via JS if needed
        time.sleep(5)
        page.screenshot(path="FacebookAutoPoster/after_cdp_video_set.png")
        print("Saved after_cdp_video_set.png!")
    else:
        print("No video input nodes found via CDP.")
