https://github.com/bulletdev/lta-results-api
Uma API poderosa para obter resultados e estatísticas de jogos da LTA
https://github.com/bulletdev/lta-results-api
cblol golang league-of-legends-api scraper
Last synced: 10 months ago
JSON representation
Uma API poderosa para obter resultados e estatísticas de jogos da LTA
- Host: GitHub
- URL: https://github.com/bulletdev/lta-results-api
- Owner: Bulletdev
- Created: 2025-04-13T11:24:58.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2025-04-15T10:42:18.000Z (10 months ago)
- Last Synced: 2025-04-15T15:16:24.373Z (10 months ago)
- Topics: cblol, golang, league-of-legends-api, scraper
- Language: Go
- Homepage: https://www.ltacomp.pro/
- Size: 42 KB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🏆 LTA Match Results API
Uma API poderosa para obter resultados e estatísticas de jogos da LTA
[](https://github.com/Bulletdev/lta-results-api/actions/workflows/go.yml)
## 📋 Índice
- [Sobre](#-sobre)
- [Funcionalidades](#-funcionalidades)
- [Tecnologias](#-tecnologias)
- [Instalação](#-instalação)
- [Estrutura do Projeto](#-estrutura-do-projeto)
- [Endpoints da API](#-endpoints-da-api)
- [Como Contribuir](#-como-contribuir)
- [Licença](#-licença)
## Sobre
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
## ✨ Funcionalidades
### ⚙️ Core
- **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
### 📊 Dados Disponíveis
- **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
### 🛠️ Administração
- **Painel Admin**: Interface para gerenciar dados manualmente
- **Autenticação Segura**: Proteção de rotas sensíveis
- **Logs Detalhados**: Acompanhamento de operações do sistema
## 🔧 Tecnologias
### Backend
- [Go](https://golang.org/) - Linguagem de programação eficiente
- [Gin](https://github.com/gin-gonic/gin) - Framework web rápido
- [ChromeDP](https://github.com/chromedp/chromedp) - Automação de navegador
- [MongoDB](https://www.mongodb.com/) - Banco de dados NoSQL
### Ferramentas
- [Docker](https://www.docker.com/) - Containerização
- [Cron](https://github.com/robfig/cron) - Agendamento de tarefas
- [Go Modules](https://blog.golang.org/using-go-modules) - Gerenciamento de dependências
## 🚀 Instalação
### Pré-requisitos
- Go 1.20 ou superior
- MongoDB 4.4 ou superior
- Chrome/Chromium (para web scraping)
### Usando Go
```bash
# 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
```
### Usando Docker
```bash
# 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
```
## 📍 Endpoints da API
### Resultados de Partidas
#### `GET /api/v1/results`
Listar resultados de partidas com filtros opcionais.
**Parâmetros de consulta:**
- `region` - Filtrar por região (sul, norte)
- `team` - Filtrar por time
- `limit` - Número de resultados por página (padrão: 10)
- `page` - Número da página (padrão: 1)
**Exemplo de resposta:**
```json
{
"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
}
}
```
#### `GET /api/v1/results/:matchId`
Obter detalhes de uma partida específica.
**Exemplo de resposta:**
```json
{
"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
},
// outros jogadores...
],
"winner": "PAIN",
"duration": "32:15",
"tournamentStage": "Regular Season"
}
```
### Estatísticas de Jogadores
#### `GET /api/v1/players/:playerName/stats`
Obter estatísticas agregadas de um jogador.
**Exemplo de resposta:**
```json
{
"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"
}
```
### Estatísticas de Times
#### `GET /api/v1/teams/:teamName/stats`
Obter estatísticas agregadas de um time.
**Exemplo de resposta:**
```json
{
"teamName": "PAIN",
"totalGames": 16,
"wins": 10,
"losses": 6,
"winRate": 62.50,
"averageGameDuration": 31.24,
"mostPlayedChampions": [
{
"champion": "Aatrox",
"games": 8,
"wins": 6,
"winRate": 75.0
},
// outros campeões...
]
}
```
### Endpoints Administrativos
> ⚠️ **Nota:** Todos os endpoints administrativos requerem autenticação via header `X-API-Key`.
#### `POST /api/v1/admin/scrape`
Iniciar processo de scraping manualmente.
#### `POST /api/v1/admin/results`
Adicionar um resultado manualmente.
#### `PUT /api/v1/admin/results/:matchId`
Atualizar um resultado existente.
#### `DELETE /api/v1/admin/results/:matchId`
Excluir um resultado.
## 💡 Como Contribuir
Contribuições são bem-vindas! Aqui estão algumas maneiras de ajudar:
1. **Reportar bugs**: Abra issues descrevendo problemas encontrados
2. **Sugerir melhorias**: Compartilhe ideias para novos recursos ou aprimoramentos
3. **Enviar pull requests**: Implemente correções ou novos recursos
4. **Melhorar a documentação**: Ajude a tornar a documentação mais clara e completa
Para contribuir com código:
```bash
# 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
```
## 📜 Licença
Este projeto está licenciado sob a [Licença MIT](LICENSE).
---