melhorando build
This commit is contained in:
1 parent
1a8bd8940c
commit
63449e2958
4 files changed
+272
-1609
No files matched your search
@@ -16,67 +16,80 @@ O sistema é um ecossistema completo para mineração, submissão, processamento
|
||||
|
||||
O script `crawler.py` atua como um bot de mineração para popular a base de dados da plataforma baixando projetos diretamente do repositório oficial (LMMS Sharing Platform - `lmms.io/lsp/`).
|
||||
|
||||
- **Segurança e Estabilidade:** O crawler é multiprocessado (limitado a 4 workers) e possui um sistema de _throttle_ que pausa a execução caso a memória RAM livre do servidor caia abaixo de 500MB.
|
||||
- **Sanitização e Auditoria:** Os arquivos baixados têm seus nomes sanitizados (slugify) e o processo gera um arquivo de auditoria (`audit_crawler.csv`) registrando tamanho, velocidade e status de cada download.
|
||||
- **Segurança e Estabilidade:** O crawler é multiprocessado e possui um sistema de _throttle_ que pausa a execução caso a memória RAM livre do servidor caia abaixo de 500MB.
|
||||
- **Sanitização e Auditoria:** Utiliza `BeautifulSoup4` para extração de links e gera relatórios de performance em CSV.
|
||||
|
||||
### 2. Pipeline ETL e Motor de Renderização
|
||||
|
||||
A conversão dos arquivos nativos em artefatos web é orquestrada pelo script `pipeline_etl.sh`, que executa três etapas sequenciais:
|
||||
A conversão dos arquivos nativos em artefatos web é orquestrada pelo script `pipeline_etl.sh`, executando o processamento em lotes:
|
||||
|
||||
1. **Extração e Renderização (`handler/main.py`):** O script utiliza a biblioteca `multiprocessing` e processa os projetos em lotes. Ele invoca o binário do LMMS em modo `offscreen` (Headless) para exportar o áudio gerado nativamente em `.ogg` e converte a estrutura do `.mmp` em dicionários de dados (JSON/YAML).
|
||||
2. **Análise de Áudio (`classificacao/analise_audio.py`):** Processamento das características sonoras.
|
||||
3. **Classificação Mestre (`classificacao/classificacao_mestre.py`):** Organização final e indexação para o frontend.
|
||||
1. **Extração e Renderização (`handler/main.py`):** Invoca o LMMS em modo `offscreen` para gerar áudio e converte o XML `.mmp` em JSON/YAML.
|
||||
2. **Análise e Inteligência Artificial:** Utiliza a biblioteca **Essentia (Tensorflow)** para extração de características acústicas e classificação de áudio.
|
||||
|
||||
### 3. MMPSearch (Catálogo Estático Frontend)
|
||||
---
|
||||
|
||||
Biblioteca gerada via Jekyll a partir dos arquivos JSON/YAML exportados pelo Pipeline ETL, focada em leveza, indexação e busca de projetos, com renderização de áudio via Web Audio API.
|
||||
## 📦 Ecossistema Python e Dependências (venv)
|
||||
|
||||
### 4. MMPCreator (Colaboração em Tempo Real)
|
||||
O ambiente virtual (`venv`) contém as bibliotecas necessárias para o ciclo de vida do dado. As principais dependências instaladas são:
|
||||
|
||||
Sequenciador interativo. Utiliza WebSockets para sincronizar edições simultâneas (áudio e MIDI) entre múltiplos usuários em salas virtuais.
|
||||
### Web & API Framework
|
||||
|
||||
- **Flask (v3.1.2):** Engine principal da API.
|
||||
- **Flask-SocketIO:** Suporte a comunicação bi-direcional via WebSockets.
|
||||
- **Gunicorn:** Servidor HTTP WSGI para produção.
|
||||
- **Flask-Admin & WTForms:** Interface de gerenciamento e validação de formulários.
|
||||
|
||||
### Segurança e Persistência
|
||||
|
||||
- **SQLAlchemy (v2.0):** ORM para manipulação do banco `users.db`.
|
||||
- **Flask-Bcrypt & Cryptography:** Hashing de senhas e camadas de criptografia.
|
||||
|
||||
### Processamento e Ciência de Dados
|
||||
|
||||
- **Essentia-Tensorflow:** Biblioteca avançada para análise de áudio e music information retrieval (MIR).
|
||||
- **NumPy:** Suporte para arrays multidimensionais e cálculos matemáticos pesados.
|
||||
- **PyYAML:** Geração de metadados para integração com o Jekyll.
|
||||
|
||||
### Utilidades e Monitoramento
|
||||
|
||||
- **Psutil:** Monitoramento de hardware para controle de processos paralelos.
|
||||
- **Watchdog:** Monitoramento de eventos no sistema de arquivos.
|
||||
- **tqdm:** Barras de progresso para tarefas de longa duração no terminal.
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Serviços de Hospedagem (Produção)
|
||||
|
||||
A infraestrutura em produção é orquestrada por gerenciadores de serviço do Linux (`systemd`), garantindo que a API e o servidor de WebSockets estejam sempre no ar.
|
||||
A infraestrutura é mantida via `systemd` para garantir alta disponibilidade.
|
||||
|
||||
### Servidor de Upload, Autenticação e Build (Flask/Gunicorn)
|
||||
### API de Upload e Processamento (Gunicorn)
|
||||
|
||||
Serviço responsável por receber arquivos, gerenciar a sessão dos usuários (SQLite, Bcrypt, Flask-Login) e automatizar o build do site via threads em segundo plano.
|
||||
|
||||
- **Serviço:** `/etc/systemd/system/upload_mmpSearch.service`
|
||||
- **Tecnologia:** Gunicorn servindo a aplicação Flask (`upload_server:app`).
|
||||
- **Configuração:** Roda com o usuário `www-data`. Utiliza 3 _workers_ e possui um timeout estendido de 300 segundos, o que é vital para não derrubar a conexão durante renderizações pesadas de áudio.
|
||||
- **Acesso da API:** `http://0.0.0.0:33002`
|
||||
- **Serviço:** `upload_mmpSearch.service`
|
||||
- **Porta:** 33002
|
||||
- **Timeout:** 300s (Essencial para o tempo de renderização do LMMS)
|
||||
|
||||
### Backend de Colaboração (NodeJS)
|
||||
|
||||
Hospeda a lógica de WebSockets responsável por gerenciar as salas e a colaboração online do editor MMPCreator em tempo real.
|
||||
|
||||
- **Serviço:** `/etc/systemd/system/backend-MMPCreator.service`
|
||||
- **Tecnologia:** NodeJS (`server.js`).
|
||||
- **Configuração de Segurança:** Roda sob o usuário `www-data` e possui acesso direto aos certificados Let's Encrypt via variáveis de ambiente (`SSL_FULLCHAIN` e `SSL_PRIVKEY`). Essa abordagem elimina a necessidade do Apache atuar como proxy reverso, facilitando a comunicação direta e segura via `wss://` e `https://`.
|
||||
- **Comportamento:** Configurado com `Restart=always` para garantir alta disponibilidade.
|
||||
- **Serviço:** `backend-MMPCreator.service`
|
||||
- **Porta:** 33001
|
||||
- **Tecnologia:** Sincronização via Socket.io com SSL nativo.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Área de Desenvolvimento (Execução Manual)
|
||||
|
||||
Para testes ou execuções manuais, o site está sendo desenvolvido em um ambiente virtual Python (`venv`).
|
||||
|
||||
1. Ative o ambiente:
|
||||
1. Ative o ambiente virtual:
|
||||
`source venv/bin/activate`
|
||||
|
||||
2. Para inicializar a biblioteca de samples do MMPCreator:
|
||||
`cd scripts/creations && python generateManifest.py`
|
||||
|
||||
3. Para forçar a indexação e execução manual do pipeline ETL:
|
||||
2. Execução do Pipeline ETL completo:
|
||||
`cd scripts && ./pipeline_etl.sh`
|
||||
|
||||
3. Inicialização de Manifestos:
|
||||
`cd scripts/creations && python generateManifest.py`
|
||||
|
||||
---
|
||||
|
||||
## ✅ Funcionalidades Já Implementadas
|
||||
## ✅ Funcionalidades Implementadas
|
||||
|
||||
- [x] Web Crawler automatizado com auditoria de hardware.
|
||||
- [x] Processamento de arquivos LMMS de forma _headless_ (renderização de áudio em servidor sem interface gráfica).
|
||||
|
||||
Reference in new issue
Block a user