import requests, json, urllib3
try:
    import msgpack
except ImportError:
    print("[!] Zainstaluj msgpack: pip3 install msgpack")
    exit(1)
urllib3.disable_warnings()

URL = "https://mtr.ciapongi.szablix.pl/mtr/api/map/updates"

def main():
    print("=== RADAR CIAPONGÓW: AGRESYWNE WYMUSZANIE DANYCH POZYCJI ===")
    
    # Symulujemy widok mapy od -100k do +100k klocków, żeby złapać WSZYSTKO
    payload = {
        "x": 0,
        "y": 0,
        "z": 0,
        "radius": 100000,
        "zoom": 1,
        "isScreen": True
    }

    print(f"[*] Wysyłanie żądania obszarowego (Radius 100km)...")
    
    try:
        # Próbujemy POST, bo większość API aktualizacji tak działa
        r = requests.post(URL, json=payload, verify=False, timeout=10)
        
        print(f"[+] Otrzymano {len(r.content)} bajtów.")
        
        # Próba dekodowania
        data = None
        try:
            data = r.json()
            print("[+] Format: JSON")
        except:
            data = msgpack.unpackb(r.content, raw=False)
            print("[+] Format: MessagePack")

        if isinstance(data, dict):
            # Sprawdzamy klucze, szukamy czegoś co pachnie pociągami
            print(f"[*] Klucze w odpowiedzi: {list(data.keys())}")
            
            # W MTR 'updates' dane siedzą często głęboko
            actual_data = data.get('data', {})
            if isinstance(actual_data, dict):
                print(f"[*] Klucze w 'data': {list(actual_data.keys())}")
                # Tutaj szukamy: 'vehicles', 't', 'v', 'trains'
                for key in ['vehicles', 'trains', 'v', 't']:
                    if key in actual_data:
                        v_list = actual_data[key]
                        if v_list:
                            print(f"✅ MAMY TO! Klucz: {key}, Liczba: {len(v_list)}")
                            print(json.dumps(v_list[0], indent=4, ensure_ascii=False))
                            return

            print("[-] Nadal pusto w 'data'. Podgląd struktury:")
            print(str(data)[:500])
        else:
            print("[-] Otrzymano dane, ale to nie jest słownik.")

    except Exception as e:
        print(f"[-] Błąd: {e}")

if __name__ == "__main__":
    main()
