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] if context.pages else context.new_page()
    
    url = 'https://www.facebook.com/profile.php?id=61594841053758&sk=directory_personal_details'
    page.goto(url, wait_until='domcontentloaded', timeout=30000)
    page.wait_for_timeout(3000)
    
    # 1. Click "Current city or town"
    print('Looking for Current city or town button...')
    city_btn = page.locator("div[role='button']:has-text('Current city or town'), span:has-text('Current city or town')").first
    if city_btn.count() > 0:
        print('Clicking Current city or town...')
        city_btn.click()
        page.wait_for_timeout(2000)
        
        # Fill Current City
        city_input = page.locator("input[aria-label*='city'], input[placeholder*='city'], input[type='search'], input[type='text']").filter(has_not=page.locator("[aria-label='Search Facebook']")).first
        print('Typing San Jose, California...')
        city_input.click()
        city_input.fill('San Jose, California')
        page.wait_for_timeout(2000)
        
        # Select from dropdown
        opts = page.locator("div[role='listbox'] div[role='option'], div[role='option'], ul[role='listbox'] li")
        print('City dropdown options:', 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
        if save_btn.count() > 0:
            save_btn.click()
            page.wait_for_timeout(4000)
            print('Saved Current City!')
            
    # 2. Click "Home town"
    print('\nLooking for Home town button...')
    home_btn = page.locator("div[role='button']:has-text('Home town'), span:has-text('Home town')").first
    if home_btn.count() > 0:
        print('Clicking Home town...')
        home_btn.click()
        page.wait_for_timeout(2000)
        
        # Fill Hometown
        home_input = page.locator("input[aria-label*='town'], input[placeholder*='town'], input[type='search'], input[type='text']").filter(has_not=page.locator("[aria-label='Search Facebook']")).first
        print('Typing Ho Chi Minh City, Vietnam...')
        home_input.click()
        home_input.fill('Ho Chi Minh City, Vietnam')
        page.wait_for_timeout(2000)
        
        # Select from dropdown
        opts2 = page.locator("div[role='listbox'] div[role='option'], div[role='option'], ul[role='listbox'] li")
        print('Hometown dropdown options:', opts2.count())
        if opts2.count() > 0:
            print('Selecting:', opts2.first.inner_text().replace('\n', ' '))
            opts2.first.click()
        else:
            page.keyboard.press('Enter')
        page.wait_for_timeout(1500)
        
        # Click Save
        save_btn2 = page.locator("div[role='button']:has-text('Save'), span:has-text('Save')").first
        if save_btn2.count() > 0:
            save_btn2.click()
            page.wait_for_timeout(4000)
            print('Saved Hometown!')
            
    page.screenshot(path=r'C:\Projects\Historical\FacebookAutoPoster\places_saved.png')
    print('Screenshot places_saved.png saved!')
