"""
Discover event page URL patterns for each bookmaker by visiting their
football section and extracting real event hrefs.

Run: python tools/event_url_discovery.py
"""
import time
from playwright.sync_api import sync_playwright

SITES = {
    'SportyBet':  'https://www.sportybet.com/ng/sport/football',
    'MSport':     'https://www.msport.com/ng/sport/football',
    'BetKing':    'https://www.betking.com/sports/s/football/',
    'NairaBet':   'https://www.nairabet.com/sports/football',
    'Betway':     'https://www.betway.com.ng/sport/soccer/',
    '1xBet':      'https://1xbet.ng/en/line/football',
    'BetWinner':  'https://betwinner.ng/en/line/football',
    'Bet9ja':     'https://sports.bet9ja.com/sport/football',
    'BCGame':     'https://bc.game/sports/',
    'Betpawa':    'https://www.betpawa.ng/ng/football',
}

# CSS selectors or link patterns that might be event links
# We'll just grab all <a> hrefs and filter for ones that look like event pages
SKIP_PATTERNS = [
    '/login', '/register', '/casino', '/promo', '/help',
    '/terms', '/about', '/contact', '/blog', 'javascript:',
    '#', 'mailto:', 'twitter', 'facebook', 'instagram',
    '/sport/football$',  # the football page itself
]

def looks_like_event(href: str) -> bool:
    if not href or len(href) < 10:
        return False
    for skip in SKIP_PATTERNS:
        if skip in href:
            return False
    # Must contain some numeric ID (event IDs are usually numbers)
    return any(c.isdigit() for c in href)


def discover(name: str, url: str, page) -> list:
    print(f"\n{'='*60}")
    print(f"[{name}] Visiting {url}")
    try:
        page.goto(url, wait_until='domcontentloaded', timeout=30_000)
        time.sleep(4)

        # Grab all links
        hrefs = page.evaluate("""() => {
            return Array.from(document.querySelectorAll('a[href]'))
                        .map(a => a.href)
                        .filter(h => h.startsWith('http'));
        }""")

        # Filter to event-like links
        event_links = []
        seen = set()
        for h in hrefs:
            if h in seen:
                continue
            seen.add(h)
            # Must be same domain and look like an event
            if url.split('/')[2] in h and looks_like_event(h):
                # Skip the sport listing page itself
                if h.rstrip('/') == url.rstrip('/'):
                    continue
                event_links.append(h)

        if event_links:
            print(f"  Sample event links ({len(event_links)} found):")
            for link in event_links[:8]:
                print(f"    {link}")
        else:
            print(f"  No event links found (page may need more interaction or JS)")

        return event_links[:5]

    except Exception as ex:
        print(f"  ERROR: {ex}")
        return []


def main():
    with sync_playwright() as pw:
        browser = pw.chromium.launch(headless=True, args=['--no-sandbox'])
        ctx = browser.new_context(
            locale='en-US',
            user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
        )
        page = ctx.new_page()

        results = {}
        for name, url in SITES.items():
            links = discover(name, url, page)
            results[name] = links

        browser.close()

    print("\n\n" + "="*60)
    print("SUMMARY — Event URL patterns:")
    print("="*60)
    for name, links in results.items():
        if links:
            print(f"\n{name}:")
            for l in links[:3]:
                print(f"  {l}")
        else:
            print(f"\n{name}: (no links found)")


if __name__ == '__main__':
    main()
