Integração com APIs esportivas (Sportmonks, API-Football) para dados ao vivo e históricos. Use ao configurar ingestão de dados via API, criar clients HTTP resilientes ou acessar dados de partidas em tempo real.
| Provedor | Tipo | Uso |
|---|---|---|
| Sportmonks | Tempo real + histórico | Produção (primário) |
| API-Football | Tempo real | Fallback / validação cruzada |
| Football-Data.org | Batch (pós-jogo) | Prototipagem gratuita |
Variáveis em .env (nunca commitar):
SPORTMONKS_API_TOKEN=your_token_here
API_FOOTBALL_KEY=your_key_here
Carregar com:
from dotenv import load_dotenv
load_dotenv()
token = os.getenv("SPORTMONKS_API_TOKEN")
O client em src/data/api_client.py deve seguir:
import time
import requests
def fetch_with_retry(url: str, headers: dict, max_retries: int = 3) -> dict:
for attempt in range(max_retries):
response = requests.get(url, headers=headers, timeout=30)
if response.status_code == 200:
return response.json()
if response.status_code == 429: # Rate limit
wait = 2 ** attempt
time.sleep(wait)
continue
response.raise_for_status()
raise RuntimeError(f"Falha após {max_retries} tentativas: {url}")
data/cache/ como JSON| Endpoint | URL | Dados |
|---|---|---|
| Fixtures | /v3/football/fixtures | Partidas e resultados |
| Standings | /v3/football/standings | Classificações |
| Teams | /v3/football/teams | Metadados de seleções |
| Players | /v3/football/players | Estatísticas individuais |
| Odds | /v3/football/odds/pre-match | Probabilidades pré-jogo |
| Predictions | /v3/football/predictions | xG e métricas preditivas |
Header de autenticação: Authorization: {token}
Para evitar fragmentação de IDs entre clubes e seleções:
PRIMARY KEY (player_id, team_id, season, competition)
Sempre usar chave composta ao armazenar/consultar dados de jogadores.
docs/arquitetura-api.mdsrc/data/api_client.pysrc/data/data_loader.py