An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# 🏆 LTA Match Results API


LTA API Logo


Uma API poderosa para obter resultados e estatísticas de jogos da LTA




[![Go](https://github.com/Bulletdev/lta-results-api/actions/workflows/go.yml/badge.svg?branch=master)](https://github.com/Bulletdev/lta-results-api/actions/workflows/go.yml)

MongoDB
Docker
License: MIT





## 📋 Í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).


---



Desenvolvido com ❤️ para a comunidade de League of Legends



GitHub
Twitter
LinkedIn