"""
Debug BCGame raw API response to verify odds field mapping.
Fetches one chunk and dumps a sample event's full market structure.

Usage:
    cd /home/cyborg/Desktop/claude/arb_bot
    python3 tools/debug_bcgame.py
"""
import sys, os, json, requests
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

BRAND        = '2103509236163162112'
BASE         = 'https://api-k-c7818b61-623.sptpub.com/api'
IDX_URL      = f'{BASE}/v4/prematch/brand/{BRAND}/en/0'
CHK_URL      = f'{BASE}/v4/prematch/brand/{{brand}}/en/{{ver}}'

HEADERS = {'Origin': 'https://bc.game', 'Referer': 'https://bc.game/'}
SPORT_ID = '1'  # football

def main():
    print('Fetching index...')
    idx = requests.get(IDX_URL, headers=HEADERS, timeout=15)
    idx.raise_for_status()
    idx_data = idx.json()

    versions = idx_data.get('top_events_versions', [])[:1]  # just first chunk
    if not versions:
        versions = idx_data.get('rest_events_versions', [])[:1]

    print(f'Index keys: {list(idx_data.keys())}')
    print(f'Fetching chunk version: {versions[0]}')

    url = CHK_URL.format(brand=BRAND, ver=versions[0])
    r = requests.get(url, headers=HEADERS, timeout=20)
    r.raise_for_status()
    chunk = r.json()

    print(f'Chunk keys: {list(chunk.keys())}')

    # Find first football event
    sample_event = None
    for eid, ev in chunk.get('events', {}).items():
        if ev and ev.get('desc', {}).get('sport') == SPORT_ID:
            sample_event = (eid, ev)
            break

    if not sample_event:
        print('No football events found in first chunk — try rest_events_versions')
        # try rest chunks
        for ver in idx_data.get('rest_events_versions', []):
            url = CHK_URL.format(brand=BRAND, ver=ver)
            r2 = requests.get(url, headers=HEADERS, timeout=20)
            r2.raise_for_status()
            chunk2 = r2.json()
            for eid, ev in chunk2.get('events', {}).items():
                if ev and ev.get('desc', {}).get('sport') == SPORT_ID:
                    sample_event = (eid, ev)
                    break
            if sample_event:
                break

    if not sample_event:
        print('No football events found at all.')
        return

    eid, ev = sample_event
    desc = ev.get('desc', {})
    comps = desc.get('competitors', [])
    print(f'\n--- Sample event: {eid} ---')
    print(f'  Teams: {comps[0].get("name") if comps else "?"} vs {comps[1].get("name") if len(comps)>1 else "?"}')
    print(f'  desc keys: {list(desc.keys())}')

    markets = ev.get('markets', {})
    print(f'\n  Market IDs present: {list(markets.keys())}')

    # Dump market "1" (1X2) in detail
    for mkt_id in ['1', '10', '18', '29']:
        mkt = markets.get(mkt_id)
        if not mkt:
            print(f'\n  Market {mkt_id}: NOT PRESENT')
            continue
        print(f'\n  Market {mkt_id} specifiers: {list(mkt.keys())}')
        for spec, spec_data in list(mkt.items())[:3]:
            print(f'    specifier="{spec}": {json.dumps(spec_data, indent=6)[:400]}')

    # Show all top-level event keys
    print(f'\n  Full event keys: {list(ev.keys())}')

if __name__ == '__main__':
    main()
