import sys
sys.stdout.reconfigure(encoding='utf-8')
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp('http://localhost:9222')
    context = browser.contexts[0]
    page = context.pages[0]
    
    # 1. Click Home town
    print('Clicking Home town item...')
    home_spans = page.locator("span:has-text('Home town')").all()
    # The second span is the button label
    clicked = False
    for s in home_spans:
        tag = s.evaluate("e => e.parentElement.tagName")
        if tag != 'H2':
            s.click()
            clicked = True
            break
            
    page.wait_for_timeout(2000)
    
    # 2. Check input
    home_input = page.locator("input[placeholder*='Home town'], input[aria-label*='Home town'], input[placeholder*='hometown']").first
    if home_input.count() == 0:
        home_input = page.locator("div[role='main'] input[type='text'], div[role='main'] input[type='search']").first
        
    print('Filling Hometown: Ho Chi Minh City, Vietnam...')
    home_input.click()
    home_input.fill('Ho Chi Minh City, Vietnam')
    page.wait_for_timeout(2500)
    
    # Select from dropdown
    opts = page.locator("div[role='listbox'] div[role='option'], div[role='option'], ul[role='listbox'] li")
    print('Options found:', opts.count())
    if opts.count() > 0:
        print('Selecting:', opts.first.inner_text().replace('\n', ' '))
        opts.first.click()
    else:
        page.keyboard.press('Enter')
    page.wait_for_timeout(1500)
    
    # Click Save
    save_btn = page.locator("div[role='button']:has-text('Save'), span:has-text('Save')").first
    print('Clicking Save...')
    save_btn.click()
    page.wait_for_timeout(3000)
    
    # Dismiss feed prompt
    no_btn = page.locator("text='No'")
    if no_btn.count() > 0:
        no_btn.last.click()
        page.wait_for_timeout(1500)
        
    page.screenshot(path=r'C:\Projects\Historical\FacebookAutoPoster\hometown_final_saved.png')
    print('Saved hometown_final_saved.png!')
