"""
Discover all G (market group) values in a 1xBet/BetWinner/22bet LineFeed response.
Uses the existing scraper session (cookies, headers) so no separate auth needed.
"""
import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

def discover(scraper_class, name, sport='football'):
    print(f"\n{'='*55}")
    print(f"  {name}")
    print('='*55)
    try:
        scraper = scraper_class()
        # Try to use cached cookies / seed if needed
        if hasattr(scraper, '_load_cached_cookies'):
            scraper._load_cached_cookies()
        # Fetch a small batch — fallback global endpoint (no champs param)
        events = scraper._fetch_events('1')
        print(f"  Raw events from global endpoint: {len(events)}")
    except Exception as ex:
        print(f"  _fetch_events failed: {ex}")
        # Try BetWinner/22bet approach (might differ)
        try:
            events = scraper._fetch_events('1')
        except Exception as ex2:
            print(f"  Retry also failed: {ex2}")
            return

    if not events:
        print("  0 events — need cookie seed or IP block")
        return

    g_data = {}
    for ev in events[:20]:
        for entry in ev.get('E', []):
            g = entry.get('G')
            if g is None:
                continue
            if g not in g_data:
                g_data[g] = {'T_set': set(), 'P_set': set(), 'count': 0}
            g_data[g]['count'] += 1
            t = entry.get('T')
            p = entry.get('P')
            if t is not None: g_data[g]['T_set'].add(t)
            if p is not None: g_data[g]['P_set'].add(p)

    print(f"\n  All G values (across first 20 events):")
    for g in sorted(g_data.keys()):
        ts = sorted(g_data[g]['T_set'])[:10]
        ps = sorted(g_data[g]['P_set'])[:8]
        print(f"    G={g:4d}  T={ts}  P={ps}")

from scrapers.oneXbet import OneXBetScraper
from scrapers.betwinner import BetWinnerScraper
from scrapers.twentytwoBet import TwentyTwoBetScraper

discover(OneXBetScraper,      '1xBet')
discover(BetWinnerScraper,    'BetWinner')
discover(TwentyTwoBetScraper, '22bet')
