Ferramenta 100% Python com frontend em PySide6 para analisar históricos da PokerStars, gerar métricas e destacar leaks exploráveis — agora com cache instantâneo (state.json) para arranque quase imediato. Sem dependência de PokerTracker, feita para ser rápida, leve e fácil de expandir.
- Parser PokerStars → lê
.txt, normaliza e grava em SQLite sem duplicados. - Métricas por jogador → VPIP, PFR, BB/100, e outras. Base modular para novas estatísticas.
- UI PySide6 → estados de loading/reset, seleção de Hero, contadores por stake e fluxo fluido.
- UI fluida → estados de loading/reset, seleção de Hero, importação assíncrona.
- Cache inteligente → guarda estado (JSON) e permite abrir a app instantaneamente sem ler a DB.
Nota: Dashboard de análise em desenvolvimento. Métricas atualmente validadas via PokerTracker.
Exploitigl/
├─ backend/
│ ├─ db/ # maos.sqlite e artefactos da BD
│ ├─ dados/ # CSVs auxiliares (debug/legado)
│ ├─ config.py # caminhos e configuração central
│ ├─ criar_bd.py # criação/seed da BD (utilitário)
│ ├─ cache_state.py # gestão do state.json (cache instantâneo)
│ ├─ db_utils.py # todas as queries/utilitários SQLite
│ ├─ gerar_stats.py # cálculo de métricas (motor)
│ ├─ parser_stars.py # parser de mãos PokerStars
│ ├─ state.json # cache persistente (gerado automaticamente)
│ ├─ regras.py # regras e constantes de parsing/estatística
│ └─ __init__.py
│
├─ frontend/
│ ├─ assets/ # ícones/logótipo usados na UI
│ ├─ import_thread.py # thread que corre o parser em background
│ ├─ main.py # entrypoint da aplicação (arranque da UI)
│ ├─ ui_builder.py # criação de widgets, layouts e estilos
│ ├─ ui_states.py # gestão de estados visuais (set_state)
│ ├─ ui_table.py # tabela/visões de estatísticas (UI)
│ ├─ welcome_dialog.py # coordenação geral do fluxo
│ └─ __init__.py
│
├─ vba/ # versão antiga/legacy em VBA
├─ venv/ # ambiente virtual (local)
├─ README.md
├─ requirements.txt
└─ LICENSE
- parser_stars.py: transforma
.txtPokerStars em registos estruturados. - db_utils.py: API direta para SQLite (contagens, top heroes, stats por stake).
- gerar_stats.py: cálculo de métricas e preparação de dados para o frontend.
- config.py: define caminhos e constantes globais (ex.:
DB_PATH).
- welcome_dialog.py: controla o fluxo da app e liga todos os módulos.
- ui_builder.py: desenha e estiliza a interface.
- ui_states.py: mostra/esconde componentes conforme o estado.
- import_thread.py: executa o parsing em background.
- assets/: logótipo e ícone da aplicação.
- Arranca a aplicação:
python frontend/main.py
- Na janela de boas-vindas:
- Clica em Procurar… e escolhe a pasta ou ficheiro de mãos PokerStars.
- Clica em Importar.
- Depois do parsing:
- O total de mãos e novos registos aparecem automaticamente.
- Seleciona o Hero e clica Continuar.
- Os dados são guardados em
backend/db/maos.sqlitee ficam disponíveis para análise.
- Sistema de cache (
state.json) com carregamento instantâneo ✅ - Estrutura de BD compatível com PokerTracker 4:
cash_limit: preenchida automaticamente com valores corretos de blinds ✅cash_tables: mapeia nomes de mesas a IDs únicos ✅cash_hand_summary: popula hand_no, id_limit, id_table, date_played, date_imported ✅cash_hand_summaryagora popula corretamente metade das colunas (até str_aggressors_r)
- Dashboard com gráficos e filtros.
- Comparador de jogadores e métricas avançadas.
- Integração com SQLAlchemy.
- Detetor automático de leaks por posição/stack depth.
- Multi-stake/multi-table simultâneo.
O projeto é aberto e colaborativo.
Se quiseres melhorar algo, abrir uma issue, propor uma ideia ou optimizar código — força.
Mantém o estilo modular e documenta bem o que muda.
Distribuído sob a MIT License.
Consulta o ficheiro LICENSE para detalhes.

