#!/usr/bin/env python3
"""Scraper Hapag-Lloyd - undetected_chromedriver"""

import sys
import json
import time
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def scrap_hapag(container):
    """Scrape Hapag-Lloyd using direct URL with container parameter"""
    options = uc.ChromeOptions()
    options.add_argument("--disable-gpu")
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-blink-features=AutomationControlled")
    
    driver = uc.Chrome(options=options)
    
    try:
        # Use direct URL with container parameter
        # Format: HLBU 6221765 (with space) -> HLBU+6221765
        container_formatted = container.replace(' ', '+')
        url = f"https://www.hapag-lloyd.com/en/online-business/track/track-by-container-solution.html?container={container_formatted}"
        print(f"[Hapag] Loading: {url}", file=sys.stderr)
        driver.get(url)
        time.sleep(8)
        
        # Accept cookies if present
        try:
            driver.execute_script("document.querySelector('button[class*=\"accept\"]').click();")
            time.sleep(2)
        except:
            pass
        
        # Extract ETA - look for dates
        xpath_attempts = [
            "//span[contains(., 'Estimated Discharge')]/ancestor::div//span[contains(text(), '202')]",
            "//div[contains(text(), 'ETA')]//following-sibling::div//span[contains(text(), '202')]",
            "//span[contains(text(), '202')]"
        ]
        
        eta = None
        for xpath in xpath_attempts:
            try:
                elements = driver.find_elements(By.XPATH, xpath)
                if elements:
                    eta = elements[0].text.strip()
                    if eta and len(eta) > 5:
                        print(f"[Hapag] Found date: {eta}", file=sys.stderr)
                        break
            except:
                continue
        
        driver.quit()
        return eta if eta else "No Encontrado"
        
    except Exception as e:
        try:
            driver.quit()
        except:
            pass
        print(f"[Hapag] Error: {str(e)[:100]}", file=sys.stderr)
        return f"Error"

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print(json.dumps({"error": "Missing container"}))
        sys.exit(1)
    
    container = sys.argv[1]
    print(f"[Hapag] Starting scraper for: {container}", file=sys.stderr)
    eta = scrap_hapag(container)
    print(json.dumps({"eta": eta, "container": container}))
