{"id":27455038,"url":"https://github.com/bulletdev/lta-results-api","last_synced_at":"2025-04-15T15:16:27.393Z","repository":{"id":287701111,"uuid":"965531772","full_name":"Bulletdev/lta-results-api","owner":"Bulletdev","description":"Uma API poderosa para obter resultados e estatísticas de jogos da LTA","archived":false,"fork":false,"pushed_at":"2025-04-15T10:42:18.000Z","size":43,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T15:16:24.373Z","etag":null,"topics":["cblol","golang","league-of-legends-api","scraper"],"latest_commit_sha":null,"homepage":"https://www.ltacomp.pro/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bulletdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-13T11:24:58.000Z","updated_at":"2025-04-15T10:42:22.000Z","dependencies_parsed_at":"2025-04-14T13:30:47.743Z","dependency_job_id":null,"html_url":"https://github.com/Bulletdev/lta-results-api","commit_stats":null,"previous_names":["bulletdev/lta-results-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bulletdev%2Flta-results-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bulletdev%2Flta-results-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bulletdev%2Flta-results-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bulletdev%2Flta-results-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bulletdev","download_url":"https://codeload.github.com/Bulletdev/lta-results-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249094935,"owners_count":21211837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cblol","golang","league-of-legends-api","scraper"],"created_at":"2025-04-15T15:16:26.743Z","updated_at":"2025-04-15T15:16:27.385Z","avatar_url":"https://github.com/Bulletdev.png","language":"Go","readme":"# 🏆 LTA Match Results API\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://ltafantasy.com/public/lta-fantasy-logo.svg\" alt=\"LTA API Logo\" width=\"300\"\u003e\n  \u003cbr\u003e\n  \u003ch3\u003eUma API poderosa para obter resultados e estatísticas de jogos da LTA\u003c/h3\u003e\n  \u003cp\u003e\n    \n[![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)\n\n  \u003cimg src=\"https://img.shields.io/badge/MongoDB-4.4+-47A248?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white\" alt=\"MongoDB\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Docker-Ready-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\" alt=\"Docker\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge\" alt=\"License: MIT\"\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n \n\u003cbr\u003e\n\n## 📋 Índice\n\n- [Sobre](#-sobre)\n- [Funcionalidades](#-funcionalidades)\n- [Tecnologias](#-tecnologias)\n- [Instalação](#-instalação)\n- [Estrutura do Projeto](#-estrutura-do-projeto)\n- [Endpoints da API](#-endpoints-da-api)\n- [Como Contribuir](#-como-contribuir)\n- [Licença](#-licença)\n\n\u003cbr\u003e\n\n##  Sobre\n\nA **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).\nUtilizando 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.\n\nIdeal para:\n- Sites de estatísticas e análises de e-sports\n- Aplicativos de fantasy league\n- Dashboards para times e casters\n- Integrações com plataformas de análise de jogos\n\n\u003cbr\u003e\n\n## ✨ Funcionalidades\n\n### ⚙️ Core\n- **Extração Automática**: Coleta dados de partidas diariamente\n- **API RESTful**: Endpoints intuitivos para consulta de dados\n- **Filtros Flexíveis**: Consulta por região, time, jogador ou período\n- **Paginação**: Controle sobre o volume de dados retornados\n\n### 📊 Dados Disponíveis\n- **Resultados de Partidas**: Placar, vencedor, data, duração\n- **Estatísticas de Jogadores**: KDA, farm, participação em abates\n- **Estatísticas de Times**: Winrate, desempenho por lado, campeões mais jogados\n- **Histórico de Confrontos**: Performance histórica entre equipes\n\n### 🛠️ Administração\n- **Painel Admin**: Interface para gerenciar dados manualmente\n- **Autenticação Segura**: Proteção de rotas sensíveis\n- **Logs Detalhados**: Acompanhamento de operações do sistema\n\n\u003cbr\u003e\n\n## 🔧 Tecnologias\n\n### Backend\n- [Go](https://golang.org/) - Linguagem de programação eficiente\n- [Gin](https://github.com/gin-gonic/gin) - Framework web rápido\n- [ChromeDP](https://github.com/chromedp/chromedp) - Automação de navegador\n- [MongoDB](https://www.mongodb.com/) - Banco de dados NoSQL\n\n### Ferramentas\n- [Docker](https://www.docker.com/) - Containerização\n- [Cron](https://github.com/robfig/cron) - Agendamento de tarefas\n- [Go Modules](https://blog.golang.org/using-go-modules) - Gerenciamento de dependências\n\n\u003cbr\u003e\n\n## 🚀 Instalação\n\n### Pré-requisitos\n- Go 1.20 ou superior\n- MongoDB 4.4 ou superior\n- Chrome/Chromium (para web scraping)\n\n### Usando Go\n\n```bash\n# Clonar o repositório\ngit clone https://github.com/bulletdev/lta-results-api.git\ncd lta-results-api\n\n# Configurar variáveis de ambiente\ncp .env .env\n# Edite o arquivo .env com suas configurações\n\n# Instalar dependências\ngo mod download\n\n# Compilar\ngo build -o lta-api ./cmd/api\n\n# Executar\n./lta-api\n```\n\n### Usando Docker\n\n```bash\n# Clonar o repositório\ngit clone https://github.com/bulletdev/lta-results-api.git\ncd lta-results-api\n\n# Configurar variáveis de ambiente\ncp .env .env\n# Edite o arquivo .env com suas configurações\n\n# Construir e iniciar containers\ndocker-compose up -d\n\n# A API estará disponível em http://localhost:8080\n```\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n## 📍 Endpoints da API\n\n### Resultados de Partidas\n\n#### `GET /api/v1/results`\nListar resultados de partidas com filtros opcionais.\n\n**Parâmetros de consulta:**\n- `region` - Filtrar por região (sul, norte)\n- `team` - Filtrar por time\n- `limit` - Número de resultados por página (padrão: 10)\n- `page` - Número da página (padrão: 1)\n\n**Exemplo de resposta:**\n```json\n{\n  \"results\": [\n    {\n      \"id\": \"6457e2eb7ac0b2a4f86c2d3a\",\n      \"matchId\": \"sul-123\",\n      \"date\": \"2025-04-10T13:00:00Z\",\n      \"teamA\": \"PAIN\",\n      \"teamB\": \"RED\",\n      \"scoreA\": 1,\n      \"scoreB\": 0,\n      \"region\": \"sul\",\n      \"winner\": \"PAIN\",\n      \"duration\": \"32:15\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 24,\n    \"page\": 1,\n    \"limit\": 10,\n    \"pages\": 3\n  }\n}\n```\n\n#### `GET /api/v1/results/:matchId`\nObter detalhes de uma partida específica.\n\n**Exemplo de resposta:**\n```json\n{\n  \"id\": \"6457e2eb7ac0b2a4f86c2d3a\",\n  \"matchId\": \"sul-123\",\n  \"date\": \"2025-04-10T13:00:00Z\",\n  \"teamA\": \"PAIN\",\n  \"teamB\": \"RED\",\n  \"scoreA\": 1,\n  \"scoreB\": 0,\n  \"region\": \"sul\",\n  \"players\": [\n    {\n      \"name\": \"Wizer\",\n      \"team\": \"PAIN\",\n      \"position\": \"TOP\",\n      \"champion\": \"Aatrox\",\n      \"kills\": 5,\n      \"deaths\": 1,\n      \"assists\": 8,\n      \"cs\": 215,\n      \"damageDealt\": 18500,\n      \"visionScore\": 32\n    },\n    // outros jogadores...\n  ],\n  \"winner\": \"PAIN\",\n  \"duration\": \"32:15\",\n  \"tournamentStage\": \"Regular Season\"\n}\n```\n\n### Estatísticas de Jogadores\n\n#### `GET /api/v1/players/:playerName/stats`\nObter estatísticas agregadas de um jogador.\n\n**Exemplo de resposta:**\n```json\n{\n  \"playerName\": \"Wizer\",\n  \"totalGames\": 12,\n  \"wins\": 8,\n  \"losses\": 4,\n  \"winRate\": 66.67,\n  \"averageKills\": 3.5,\n  \"averageDeaths\": 2.1,\n  \"averageAssists\": 6.4,\n  \"averageCS\": 201.3,\n  \"kda\": \"4.71\"\n}\n```\n\n### Estatísticas de Times\n\n#### `GET /api/v1/teams/:teamName/stats`\nObter estatísticas agregadas de um time.\n\n**Exemplo de resposta:**\n```json\n{\n  \"teamName\": \"PAIN\",\n  \"totalGames\": 16,\n  \"wins\": 10,\n  \"losses\": 6,\n  \"winRate\": 62.50,\n  \"averageGameDuration\": 31.24,\n  \"mostPlayedChampions\": [\n    {\n      \"champion\": \"Aatrox\",\n      \"games\": 8,\n      \"wins\": 6,\n      \"winRate\": 75.0\n    },\n    // outros campeões...\n  ]\n}\n```\n\n### Endpoints Administrativos\n\n\u003e ⚠️ **Nota:** Todos os endpoints administrativos requerem autenticação via header `X-API-Key`.\n\n#### `POST /api/v1/admin/scrape`\nIniciar processo de scraping manualmente.\n\n#### `POST /api/v1/admin/results`\nAdicionar um resultado manualmente.\n\n#### `PUT /api/v1/admin/results/:matchId`\nAtualizar um resultado existente.\n\n#### `DELETE /api/v1/admin/results/:matchId`\nExcluir um resultado.\n\n\u003cbr\u003e\n\n## 💡 Como Contribuir\n\nContribuições são bem-vindas! Aqui estão algumas maneiras de ajudar:\n\n1. **Reportar bugs**: Abra issues descrevendo problemas encontrados\n2. **Sugerir melhorias**: Compartilhe ideias para novos recursos ou aprimoramentos\n3. **Enviar pull requests**: Implemente correções ou novos recursos\n4. **Melhorar a documentação**: Ajude a tornar a documentação mais clara e completa\n\nPara contribuir com código:\n\n```bash\n# 1. Faça um fork do repositório\n# 2. Clone seu fork\ngit clone https://github.com/bulletdev/lta-results-api.git\n\n# 3. Crie uma branch para sua feature\ngit checkout -b feature/nova-funcionalidade\n\n# 4. Faça suas alterações e commit\ngit commit -m \"Adiciona nova funcionalidade\"\n\n# 5. Envie para o seu fork\ngit push origin feature/nova-funcionalidade\n\n# 6. Abra um Pull Request\n```\n\n\u003cbr\u003e\n\n## 📜 Licença\n\nEste projeto está licenciado sob a [Licença MIT](LICENSE).\n\n\u003cbr\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    Desenvolvido com ❤️ para a comunidade de League of Legends\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/bulletdev\"\u003eGitHub\u003c/a\u003e •\n    \u003ca href=\"https://twitter.com/bulletonrails\"\u003eTwitter\u003c/a\u003e •\n    \u003ca href=\"https://linkedin.com/in/michael-bullet\"\u003eLinkedIn\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbulletdev%2Flta-results-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbulletdev%2Flta-results-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbulletdev%2Flta-results-api/lists"}