Uma API robusta desenvolvida em Python para realizar web scraping de cifras musicais. O projeto permite extrair letras e acordes de forma estruturada, facilitando a integração com outros aplicativos de música ou estudos musicais.
- Linguagem: Python 3.9+
- Web Framework: Flask
- Scraping: BeautifulSoup4 / Requests
- Containerização: Docker & Docker Compose
- Automação: Makefile
Você pode subir o ambiente de três maneiras diferentes:
Para rodar a aplicação isolada em um container:
docker-compose up --buildSe você estiver em um ambiente Unix, utilize os atalhos do Makefile:
make install # Para instalar as dependências locais
make run # Para executar o servidor Flask# Criar e ativar ambiente virtual
python -m venv venv
source venv/bin/activate # No Windows use: venv\Scripts\activate
# Instalar dependências
pip install -r requirements.txt
# Executar aplicação
python app.pyapp.py: Ponto de entrada da API Flask. Gerencia as rotas, o logging de requisições e a configuração de CORS.scraper.py: Contém a lógica de extração de dados do Cifra Club, como a listagem de músicas e a raspagem da cifra completa.Dockerfile&docker-compose.yml: Define o ambiente containerizado para garantir que a API rode em qualquer máquina (atualmente configurada na porta3000).Makefile: Atalhos para simplificar comandos frequentes (install,run).requirements.txt: Dependências do projeto (Flask, flask-cors, beautifulsoup4, requests).
Abaixo estão os endpoints reais configurados nesta API:
| Método | Endpoint | Descrição | Parâmetros |
|---|---|---|---|
GET |
/artist/<slug> |
Retorna a lista de músicas de um artista. | artist_slug (ex: queen) |
GET |
/cifra |
Retorna a cifra completa de uma música. | url (URL do Cifra Club) |
GET |
/artist/<slug>/songs |
Lista músicas com opção de preview da cifra. | limit (int), with_cifra (bool) |
Buscar músicas de um artista:
GET http://localhost:3000/artist/pericles
Buscar cifra específica:
GET http://localhost:3000/cifra?url=https://www.cifraclub.com.br/pericles/ate-que-durou/
Este projeto está sob a licença MIT. Sinta-se à vontade para usar e estudar.