- Funcionalidades
- Tecnologias
- Instalação
- Configuração
- Endpoints da API
- Troubleshooting
- Segurança
- Como Contribuir
- Licença
- Mantendo a API Ativa
A LTA Match Results API é uma solução completa para extrair, armazenar e disponibilizar dados sobre os resultados de partidas da Liga de League of Legends (LTA). Utilizando técnicas de web scraping, a API coleta automaticamente informações de jogos das regiões Sul e Norte, fornecendo dados detalhados sobre desempenho de equipes e jogadores.
Ideal para:
- Sites de estatísticas e análises de e-sports
- Aplicativos de fantasy league
- Dashboards para times e casters
- Integrações com plataformas de análise de jogos
- Extração Automática: Coleta dados de partidas diariamente
- API RESTful: Endpoints intuitivos para consulta de dados
- Filtros Flexíveis: Consulta por região, time, jogador ou período
- Paginação: Controle sobre o volume de dados retornados
- Resultados de Partidas: Placar, vencedor, data, duração
- Estatísticas de Jogadores: KDA, farm, participação em abates
- Estatísticas de Times: Winrate, desempenho por lado, campeões mais jogados
- Histórico de Confrontos: Performance histórica entre equipes
- Painel Admin: Interface para gerenciar dados manualmente
- Autenticação Segura: Proteção de rotas sensíveis
- Logs Detalhados: Acompanhamento de operações do sistema
- Go - Linguagem de programação eficiente
- Gin - Framework web rápido
- ChromeDP - Automação de navegador
- MongoDB - Banco de dados NoSQL
- Docker - Containerização
- Cron - Agendamento de tarefas
- Go Modules - Gerenciamento de dependências
- Go 1.20 ou superior
- MongoDB 4.4 ou superior
- Chrome/Chromium (para web scraping)
# Clonar o repositório
git clone https://github.com/bulletdev/lta-results-api.git
cd lta-results-api
# Configurar variáveis de ambiente
cp .env .env
# Edite o arquivo .env com suas configurações
# Instalar dependências
go mod download
# Compilar
go build -o lta-api ./cmd/api
# Executar
./lta-api
# Clonar o repositório
git clone https://github.com/bulletdev/lta-results-api.git
cd lta-results-api
# Configurar variáveis de ambiente
cp .env .env
# Edite o arquivo .env com suas configurações
# Construir e iniciar containers
docker-compose up -d
# A API estará disponível em http://localhost:8080
O projeto requer as seguintes variáveis de ambiente:
# Configurações do Servidor
PORT=8080
# Configurações do MongoDB
MONGODB_USERNAME=
MONGODB_PASSWORD=
MONGODB_CLUSTER=
MONGODB_DATABASE=
# Configurações de Segurança
ADMIN_API_KEY=
- Crie um cluster no MongoDB Atlas
- Configure o acesso à rede (IP whitelist)
- Crie um usuário com permissões de leitura/escrita
- Obtenha a string de conexão:
mongodb+srv://<username>:<password>@<cluster>/<database>?retryWrites=true&w=majority
Listar resultados de partidas com filtros opcionais.
Parâmetros de consulta:
region
- Filtrar por região (sul, norte)team
- Filtrar por timelimit
- Número de resultados por página (padrão: 10)page
- Número da página (padrão: 1)
Exemplo de resposta:
{
"results": [
{
"id": "6457e2eb7ac0b2a4f86c2d3a",
"matchId": "sul-123",
"date": "2025-04-10T13:00:00Z",
"teamA": "PAIN",
"teamB": "RED",
"scoreA": 1,
"scoreB": 0,
"region": "sul",
"winner": "PAIN",
"duration": "32:15"
}
],
"pagination": {
"total": 24,
"page": 1,
"limit": 10,
"pages": 3
}
}
Obter detalhes de uma partida específica.
Exemplo de resposta:
{
"id": "6457e2eb7ac0b2a4f86c2d3a",
"matchId": "sul-123",
"date": "2025-04-10T13:00:00Z",
"teamA": "PAIN",
"teamB": "RED",
"scoreA": 1,
"scoreB": 0,
"region": "sul",
"players": [
{
"name": "Wizer",
"team": "PAIN",
"position": "TOP",
"champion": "Aatrox",
"kills": 5,
"deaths": 1,
"assists": 8,
"cs": 215,
"damageDealt": 18500,
"visionScore": 32
}
],
"winner": "PAIN",
"duration": "32:15",
"tournamentStage": "Regular Season"
}
Obter estatísticas agregadas de um jogador.
Exemplo de resposta:
{
"playerName": "Wizer",
"totalGames": 12,
"wins": 8,
"losses": 4,
"winRate": 66.67,
"averageKills": 3.5,
"averageDeaths": 2.1,
"averageAssists": 6.4,
"averageCS": 201.3,
"kda": "4.71"
}
Obter estatísticas agregadas de um time.
Exemplo de resposta:
{
"teamName": "PAIN",
"totalGames": 16,
"wins": 10,
"losses": 6,
"winRate": 62.50,
"averageGameDuration": 31.24,
"mostPlayedChampions": [
{
"champion": "Aatrox",
"games": 8,
"wins": 6,
"winRate": 75.0
}
]
}
⚠️ Nota: Todos os endpoints administrativos requerem autenticação via headerX-API-Key
.
Iniciar processo de scraping manualmente.
Adicionar um resultado manualmente.
Atualizar um resultado existente.
Excluir um resultado.
-
Erro de conexão com o MongoDB
- Verifique se as credenciais estão corretas
- Confirme se o IP está na whitelist
- Verifique se o cluster está online
-
Erro no scraping
- Verifique se o Chrome/Chromium está instalado
- Confirme se as URLs estão acessíveis
- Verifique os logs para mais detalhes
-
Erro de autenticação
- Verifique se a chave de API está correta
- Confirme se o header
X-API-Key
está sendo enviado - Verifique se a chave está configurada no
.env
Os logs são exibidos no console e incluem:
- Conexão com o banco de dados
- Operações de scraping
- Erros e exceções
- Requisições à API
- Todas as rotas administrativas requerem uma chave de API
- Configure a variável
ADMIN_API_KEY
no arquivo.env
- Inclua a chave no header
X-API-Key
das requisições
- Nunca compartilhe sua chave de API
- Use HTTPS em produção
- Mantenha as dependências atualizadas
- Monitore os logs regularmente
- Implemente rate limiting em produção
Contribuições são bem-vindas! Aqui estão algumas maneiras de ajudar:
- Reportar bugs: Abra issues descrevendo problemas encontrados
- Sugerir melhorias: Compartilhe ideias para novos recursos ou aprimoramentos
- Enviar pull requests: Implemente correções ou novos recursos
- Melhorar a documentação: Ajude a tornar a documentação mais clara e completa
Para contribuir com código:
# 1. Faça um fork do repositório
# 2. Clone seu fork
git clone https://github.com/bulletdev/lta-results-api.git
# 3. Crie uma branch para sua feature
git checkout -b feature/nova-funcionalidade
# 4. Faça suas alterações e commit
git commit -m "Adiciona nova funcionalidade"
# 5. Envie para o seu fork
git push origin feature/nova-funcionalidade
# 6. Abra um Pull Request
Este projeto está licenciado sob a Licença MIT.
Para evitar que a API seja desligada por inatividade no Render, você pode usar o script de keep-alive:
- Instale as dependências:
cd scripts
pip install -r requirements.txt
- Execute o script:
python keep_alive.py
O script fará requisições a cada 30 segundos para o endpoint /health
, mantendo a API ativa.
Você também pode configurar a URL da API através da variável de ambiente API_URL
:
export API_URL=https://sua-api-url.com
python keep_alive.py