Skip to main content

Biblioteca Python para acessar dados históricos de jogos de cassinos online.

Project description

📚 PyBetStoric - Documentação Completa

📋 Índice


🎯 Visão Geral

PyBetStoric é uma biblioteca Python para obter históricos de jogos de cassino ao vivo. A biblioteca oferece acesso programático a dados de mais de 95 jogos diferentes, incluindo Baccarat, Roleta, Sic Bo e Game Shows.

Características Principais:

  • 95+ Jogos Suportados: Baccarat, Roleta, Sic Bo, Game Shows e mais
  • Autenticação Segura: Sistema de licenças com cache de sessão
  • Múltiplos Formatos: JSON, Compacto, Detalhado
  • Tradução Automática: Campos em português
  • Execução Repetida: Coleta contínua de dados
  • Cache Inteligente: Otimização de performance

🚀 Instalação

Pré-requisitos

pip install PyBetStoric

Instalação da Biblioteca

import PyBetStoric

⚡ Início Rápido

import PyBetStoric

# 1. Autenticação
client = PyBetStoric.LoginClient(
    email="seu_email@exemplo.com",
    user="seu_usuario",
    password="sua_senha",
    license_code="SEU_CODIGO_LICENCA"
)

# 2. Inicializar Games
games = PyBetStoric.Games(client)

# 3. Obter dados
resultados = games.get_baccarat_1(number_of_games=20)

# 4. Exibir resultados
games.print_results(resultados)

# 5. Fechar conexão
client.close()

🔐 Autenticação

LoginClient

O LoginClient é responsável pela autenticação e gerenciamento de sessão.

client = PyBetStoric.LoginClient(
    email="email@exemplo.com",      # Email cadastrado
    user="usuario123",              # Nome de usuário
    password="senha123",            # Senha da conta
    license_code="ABC123XYZ"        # Código de licença
)

Métodos do Client

Método Descrição Retorno
get_history(table_id, number_of_games) Obter histórico direto dict
get_jsessionid() Obter ID da sessão string
is_authenticated() Verificar autenticação boolean
close() Fechar conexão None

Exemplo de Uso:

# Verificar autenticação
if client.is_authenticated():
    print("Cliente autenticado com sucesso!")

# Obter histórico direto
history = client.get_history("h22z8qhp17sa0vkh", 10)
print(f"Jogos obtidos: {len(history['history'])}")

🎮 Jogos Disponíveis

Categorias de Jogos

🎰 Roletas (25+ variações)

  • Básicas: American, Auto, German, Russian
  • Regionais: Brazilian, Korean, Thai, Turkish, Vietnamese
  • Especiais: Mega, PowerUp, Fortune, Lucky 6
  • VIP: Private Lounge, VIP Auto, VIP Standard

🃏 Baccarat (30+ mesas)

  • Padrão: Baccarat 1-9, Brazilian Baccarat
  • Speed: Speed Baccarat 1-18, Regional Speed
  • Especiais: Mega, Fortune 6, Super 8, Squeeze
  • Privadas: Private Lounge 1-5

🎲 Sic Bo

  • Tradicional: Sic Bo padrão
  • Mega: Indonesian Mega Sic Bo
  • Híbrido: Mega Sic Bac

🎪 Game Shows

  • Sweet Bonanza Candyland: Jogo temático de doces
  • Money Time: Multiplicadores de dinheiro
  • Mega Wheel: Roda da fortuna
  • Treasure Island: Caça ao tesouro
  • Dice City: Jogo urbano de dados
  • Football Blitz: Temático de futebol
  • Spaceman: Multiplicador espacial

🎯 Outros Jogos

  • Dragon Tiger: Comparação simples de cartas
  • Andar Bahar: Jogo indiano tradicional
  • 24D Spin: Jogo de spin com 24 posições

Lista Completa de Métodos

# Obter lista de todos os jogos
jogos_disponiveis = games.get_available_games()
print(f"Total: {len(jogos_disponiveis)} jogos")

# Obter informações de um jogo específico
info = games.get_game_info("baccarat_1")
print(f"Table ID: {info['table_id']}")
print(f"Campos: {info['fields']}")

🛠️ Métodos Principais

Classe Games

A classe Games é o ponto principal para obter dados dos jogos.

games = PyBetStoric.Games(client)

Padrão de Métodos

Todos os jogos seguem o mesmo padrão:

# Sintaxe geral
resultados = games.get_NOME_DO_JOGO(
    number_of_games=100,    # Quantidade (1-500)
    repeat=1,               # Repetições (1, 5, "i" para infinito)
    interval=None           # Intervalo em segundos
)

Exemplos por Categoria:

Baccarat

# Baccarat básico
baccarat_1 = games.get_baccarat_1(number_of_games=20)
baccarat_2 = games.get_baccarat_2(number_of_games=30)

# Speed Baccarat
speed_baccarat_1 = games.get_speed_baccarat_1(number_of_games=25)
speed_baccarat_brasileiro_1 = games.get_speed_baccarat_brasileiro_1(number_of_games=40)

# Baccarat especial
mega_baccarat = games.get_mega_baccarat(number_of_games=15)
fortune_6_baccarat = games.get_fortune_6_baccarat(number_of_games=35)

Roleta

# Roletas básicas
american_roulette = games.get_american_roulette(number_of_games=30)
auto_roulette = games.get_auto_roulette(number_of_games=25)

# Roletas especiais
mega_roulette = games.get_mega_roulette(number_of_games=40)
powerup_roulette = games.get_powerup_roulette(number_of_games=20)

# Roletas regionais
brasileira_roleta = games.get_brasileira_roleta(number_of_games=35)
korean_roulette = games.get_korean_roulette(number_of_games=30)

Game Shows

# Game Shows populares
sweet_bonanza = games.get_sweet_bonanza_candyland(number_of_games=15)
money_time = games.get_money_time(number_of_games=20)
mega_wheel = games.get_mega_wheel(number_of_games=25)
treasure_island = games.get_treasure_island(number_of_games=30)

⚙️ Configurações

Sistema de Tradução

Controle da Tradução Automática

# Verificar status
status = games.is_auto_translate_enabled()
print(f"Tradução habilitada: {status}")

# Habilitar tradução
games.enable_auto_translate()

# Desabilitar tradução
games.disable_auto_translate()

Campos Personalizados

# Definir campos personalizados
mapeamento_custom = {
    "desc": "Resultado Final",
    "playerScore": "Pontos Jogador",
    "winningScore": "Pontos Vencedor",
    "playerCards": "Cartas do Jogador",
    "BankerCards": "Cartas da Banca"
}

games.set_custom_field_names(mapeamento_custom)

# Obter mapeamento atual
campos_atuais = games.get_custom_field_names()

# Limpar campos personalizados
games.clear_custom_field_names()

Tradução Manual

# Traduzir com configuração padrão
traduzido = games.translate_fields(resultados, translate=True)

# Traduzir com mapeamento personalizado
traduzido_custom = games.translate_fields(
    resultados, 
    translate=True, 
    custom_mapping={"desc": "RESULTADO"}
)

# Sem tradução
sem_traducao = games.translate_fields(resultados, translate=False)

📊 Formatos de Exibição

1. Formato JSON

Ideal para APIs e processamento de dados:

games.print_json(resultados)

Saída:

[
{"Descrição": "Player", "Pontuação do Jogador": 7, "Pontuação Vencedora": 7, "Cartas do Jogador": ["4D", "3D"], "Cartas da Banca": null, "Rodada": 1},
{"Descrição": "Banker", "Pontuação do Jogador": 4, "Pontuação Vencedora": 5, "Cartas do Jogador": ["3C", "2H"], "Cartas da Banca": null, "Rodada": 2}
]

2. Formato Compacto

Uma linha por resultado:

games.print_compact(resultados)

Saída:

Rodada  1: Descrição: Player | Pontuação do Jogador: 7 | Pontuação Vencedora: 7
Rodada  2: Descrição: Banker | Pontuação do Jogador: 4 | Pontuação Vencedora: 5

3. Formato Detalhado

Formato completo com todos os campos:

# Com número da rodada
games.print_results(resultados, show_round_number=True, compact=False)

# Sem número da rodada
games.print_results(resultados, show_round_number=False, compact=False)

Saída:

RODADA 1:
   Descrição: Player
   Pontuação do Jogador: 7
   Pontuação Vencedora: 7
   Cartas do Jogador: ['4D', '3D']
   Cartas da Banca: None

4. Formatação Personalizada

# Com tradução personalizada
games.print_json(resultados, custom_mapping={"desc": "RESULTADO"})
games.print_compact(resultados, custom_mapping={"playerScore": "PONTOS"})
games.print_results(resultados, custom_mapping={"winningScore": "VENCEDOR"})

🚀 Recursos Avançados

Execução com Repetição

Repetição Finita

# Executar 5 vezes com intervalo de 10 segundos
resultados = games.get_baccarat_1(
    number_of_games=20,
    repeat=5,
    interval=10
)

# Processar resultados
for i, resultado in enumerate(resultados, 1):
    print(f"Execução {i}: {len(resultado)} jogos")

Execução Infinita

# Executar infinitamente até interrupção (Ctrl+C)
resultados_infinitos = games.get_baccarat_1(
    number_of_games=10,
    repeat="i",
    interval=30  # A cada 30 segundos
)

# Processar em tempo real
try:
    for resultado in resultados_infinitos:
        print(f"Novos dados: {len(resultado)} jogos")
        # Processar dados aqui
except KeyboardInterrupt:
    print("Execução interrompida pelo usuário")

Cache de Sessão

O sistema possui cache automático de sessão:

# Cache é gerenciado automaticamente
# Arquivo: .DO_NOT_DELET.json
# Tempo de vida: 10 minutos

# Verificar se sessão está válida
if client.is_authenticated():
    print("Sessão ativa (pode ser do cache)")

Análise de Dados

# Obter dados para análise
dados = games.get_baccarat_1(number_of_games=100)

# Contar resultados
contadores = {}
for jogo in dados:
    resultado = jogo.get('Descrição', 'Desconhecido')
    contadores[resultado] = contadores.get(resultado, 0) + 1

# Calcular percentuais
total = len(dados)
for resultado, count in contadores.items():
    percentual = (count / total) * 100
    print(f"{resultado}: {count} ({percentual:.1f}%)")

💡 Exemplos Práticos

Exemplo 1: Monitoramento Básico

import PyBetStoric

# Configuração
client = PyBetStoric.LoginClient(
    email="email@exemplo.com",
    user="usuario",
    password="senha",
    license_code="LICENCA"
)
games = PyBetStoric.Games(client)

# Obter últimos 50 resultados do Baccarat
resultados = games.get_baccarat_1(number_of_games=50)

# Exibir em formato compacto
games.print_compact(resultados)

client.close()

Exemplo 2: Análise Estatística

import PyBetStoric

client = PyBetStoric.LoginClient(
    email="email@exemplo.com",
    user="usuario", 
    password="senha",
    license_code="LICENCA"
)
games = PyBetStoric.Games(client)

# Coletar dados de múltiplas mesas
baccarat_1 = games.get_baccarat_1(number_of_games=100)
baccarat_2 = games.get_baccarat_2(number_of_games=100)
speed_baccarat = games.get_speed_baccarat_1(number_of_games=100)

# Análise comparativa
def analisar_resultados(dados, nome_mesa):
    contadores = {}
    for jogo in dados:
        resultado = jogo.get('Descrição', jogo.get('desc', 'N/A'))
        contadores[resultado] = contadores.get(resultado, 0) + 1
    
    print(f"\n=== {nome_mesa} ===")
    total = len(dados)
    for resultado, count in contadores.items():
        percentual = (count / total) * 100
        print(f"{resultado}: {count}/{total} ({percentual:.1f}%)")

analisar_resultados(baccarat_1, "Baccarat 1")
analisar_resultados(baccarat_2, "Baccarat 2") 
analisar_resultados(speed_baccarat, "Speed Baccarat 1")

client.close()

Exemplo 3: Coleta Contínua

import PyBetStoric
import time

client = PyBetStoric.LoginClient(
    email="email@exemplo.com",
    user="usuario",
    password="senha", 
    license_code="LICENCA"
)
games = PyBetStoric.Games(client)

# Configurar campos personalizados
games.set_custom_field_names({
    "desc": "Resultado",
    "playerScore": "Jogador",
    "winningScore": "Vencedor"
})

print("Iniciando coleta contínua... (Ctrl+C para parar)")

try:
    # Coleta a cada 60 segundos
    resultados_continuos = games.get_baccarat_1(
        number_of_games=5,
        repeat="i",
        interval=60
    )
    
    for i, resultado in enumerate(resultados_continuos, 1):
        print(f"\n--- Coleta {i} ({time.strftime('%H:%M:%S')}) ---")
        games.print_compact(resultado)
        
except KeyboardInterrupt:
    print("\nColeta interrompida pelo usuário")
finally:
    client.close()

Exemplo 4: Múltiplos Jogos

import PyBetStoric

client = PyBetStoric.LoginClient(
    email="email@exemplo.com",
    user="usuario",
    password="senha",
    license_code="LICENCA"
)
games = PyBetStoric.Games(client)

# Lista de jogos para monitorar
jogos_para_monitorar = [
    ("Baccarat 1", lambda: games.get_baccarat_1(number_of_games=20)),
    ("American Roulette", lambda: games.get_american_roulette(number_of_games=20)),
    ("Mega Wheel", lambda: games.get_mega_wheel(number_of_games=15)),
    ("Dragon Tiger", lambda: games.get_dragon_tiger(number_of_games=25))
]

# Coletar dados de todos os jogos
for nome_jogo, metodo_jogo in jogos_para_monitorar:
    print(f"\n{'='*50}")
    print(f"COLETANDO: {nome_jogo}")
    print(f"{'='*50}")
    
    try:
        dados = metodo_jogo()
        print(f"Dados coletados: {len(dados)} resultados")
        
        # Exibir últimos 3 resultados
        games.print_results(dados[:3], show_round_number=True, compact=True)
        
    except Exception as e:
        print(f"Erro ao coletar {nome_jogo}: {e}")

client.close()

⚠️ Tratamento de Erros

Erros Comuns

1. Erro de Autenticação

try:
    client = PyBetStoric.LoginClient(
        email="email@exemplo.com",
        user="usuario",
        password="senha_incorreta",
        license_code="LICENCA"
    )
except Exception as e:
    print(f"Erro de autenticação: {e}")

2. Erro de Licença

try:
    client = PyBetStoric.LoginClient(
        email="email@exemplo.com",
        user="usuario", 
        password="senha",
        license_code="LICENCA_INVALIDA"
    )
except Exception as e:
    print(f"Erro de licença: {e}")

3. Erro de Rede

try:
    resultados = games.get_baccarat_1(number_of_games=50)
except Exception as e:
    print(f"Erro de rede: {e}")
    # Tentar novamente após alguns segundos
    time.sleep(5)
    resultados = games.get_baccarat_1(number_of_games=50)

Boas Práticas

1. Sempre Fechar Conexões

client = None
try:
    client = PyBetStoric.LoginClient(...)
    games = PyBetStoric.Games(client)
    # Seu código aqui
finally:
    if client:
        client.close()

2. Verificar Autenticação

if not client.is_authenticated():
    print("Cliente não autenticado!")
    exit(1)

3. Validar Parâmetros

# Validar number_of_games
number_of_games = min(max(1, number_of_games), 500)

# Validar repeat e interval
if repeat > 1 and interval is None:
    raise ValueError("Interval é obrigatório quando repeat > 1")

📝 Campos de Dados

Baccarat

Campo Original Tradução Descrição
desc Descrição Resultado (Player/Banker/Tie)
playerScore Pontuação do Jogador Pontos do jogador
winningScore Pontuação Vencedora Pontos vencedores
playerCards Cartas do Jogador Cartas do jogador
BankerCards Cartas da Banca Cartas da banca

Roleta

Campo Original Tradução Descrição
gameResult Resultado do Jogo Número vencedor
powerUpThresholdReached PowerUp Atingido PowerUp ativado
fortuneRoulette Fortune Roulette Resultado Fortune
megaRoulette Mega Roulette Multiplicador Mega

Sic Bo

Campo Original Tradução Descrição
die1 Dado 1 Valor do primeiro dado
die2 Dado 2 Valor do segundo dado
die3 Dado 3 Valor do terceiro dado
megaWinFlag Mega Vitória Flag de mega vitória

🔧 Configuração Avançada

Variáveis de Ambiente

import os

# Usar variáveis de ambiente para credenciais
client = PyBetStoric.LoginClient(
    email=os.getenv('PYBET_EMAIL'),
    user=os.getenv('PYBET_USER'),
    password=os.getenv('PYBET_PASSWORD'),
    license_code=os.getenv('PYBET_LICENSE')
)

Logging Personalizado

import logging

# Configurar logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('pybet.log'),
        logging.StreamHandler()
    ]
)

# Usar no código
logger = logging.getLogger(__name__)

try:
    resultados = games.get_baccarat_1(number_of_games=50)
    logger.info(f"Coletados {len(resultados)} resultados")
except Exception as e:
    logger.error(f"Erro na coleta: {e}")

📊 Performance e Otimização

Dicas de Performance

  1. Use cache de sessão: Evite reautenticações desnecessárias
  2. Limite number_of_games: Máximo recomendado: 100-200 por chamada
  3. Use intervalos adequados: Mínimo 10 segundos entre chamadas
  4. Feche conexões: Sempre use client.close()

Monitoramento de Recursos

import time
import psutil

def monitorar_performance():
    inicio = time.time()
    memoria_inicial = psutil.Process().memory_info().rss / 1024 / 1024
    
    # Seu código aqui
    resultados = games.get_baccarat_1(number_of_games=100)
    
    fim = time.time()
    memoria_final = psutil.Process().memory_info().rss / 1024 / 1024
    
    print(f"Tempo: {fim - inicio:.2f}s")
    print(f"Memória: {memoria_final - memoria_inicial:.2f}MB")
    print(f"Resultados: {len(resultados)}")

🆘 Suporte e Troubleshooting

Problemas Comuns

1. "Erro de autenticação"

  • Verifique email, usuário e senha
  • Confirme se a licença está ativa
  • Tente limpar o cache: delete .DO_NOT_DELET.json

2. "Sessão expirada"

  • O sistema reautentica automaticamente
  • Se persistir, reinicie o cliente

3. "Erro de rede"

  • Verifique conexão com internet
  • Tente novamente após alguns segundos
  • Verifique se não há firewall bloqueando

4. "Dados vazios"

  • Mesa pode estar offline
  • Tente outra mesa similar
  • Verifique se o table_id está correto

Arquivos de Log

  • app.error: Erros detalhados do sistema
  • .DO_NOT_DELET.json: Cache de sessões

📄 Licença e Termos

Esta biblioteca requer uma licença válida para funcionamento. Entre em contato com o fornecedor para:

  • Obter licença
  • Renovar assinatura
  • Suporte técnico
  • Documentação adicional

🔄 Changelog

Versão Atual

  • ✅ 95+ jogos suportados
  • ✅ Sistema de cache otimizado
  • ✅ Tradução automática
  • ✅ Múltiplos formatos de saída
  • ✅ Execução com repetição
  • ✅ Tratamento robusto de erros

📞 Para suporte técnico ou dúvidas, consulte a documentação oficial ou entre em contato com o suporte.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybetstoric-1.0.0.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pybetstoric-1.0.0-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file pybetstoric-1.0.0.tar.gz.

File metadata

  • Download URL: pybetstoric-1.0.0.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for pybetstoric-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2db692cdd9f4c00d2bb472e3fa5115f495cb6b4150f39f9fe9a3a67e48f214d8
MD5 09c25d5535462366373611f487bdd33e
BLAKE2b-256 e5d395c659e06c7cdf0b53383b4fab488efebd5b6b5b74d890a64c6d39b08bde

See more details on using hashes here.

File details

Details for the file pybetstoric-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pybetstoric-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for pybetstoric-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 332882c2154fdce77f180b4b835199810de5dcdf6efa8ba7d402d75544a81bc9
MD5 6cf86fec7d5e8e67b5f71608c6aa2618
BLAKE2b-256 54155f57a3d0b9e82f943ab27b33d6da02cab00ce74ca4826362e6b0631b72ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page