🔬 EPG Baseado em Padrões ICY
Sistema de geração automática de EPG (Electronic Program Guide) através da análise de padrões históricos em metadata ICY capturada ao longo do tempo.
📚 Documentação Completa
Este sistema está dividido em múltiplas fases, cada uma com sua documentação específica:
🔬 [Fase 4: Análise de Viabilidade](ICY_PATTERN_EPG_VIABILITY.md)
Análise técnica completa sobre a viabilidade de gerar EPG baseado em registos ICY históricos.
Conteúdo:
- Conceito e arquitetura proposta
- Algoritmos de análise de padrões
- Normalização e classificação de conteúdo
- Casos de uso favoráveis e desfavoráveis
- Limitações identificadas
- Comparação com outras fontes de EPG
- Roadmap de implementação completo
Quando ler: Para entender a fundamentação técnica e científica do sistema.
📊 [Fase 4: Resultados dos Testes](PHASE_4_VIABILITY_TEST_RESULTS.md)
Resultados da prova de conceito com dados simulados e análise de viabilidade real.
Conteúdo:
- Score de viabilidade: 100/100
- Métricas detalhadas de qualidade
- Programas detectados automaticamente
- EPG gerado como exemplo
- Conclusões e recomendações
- Decisão de implementação
Quando ler: Para ver os resultados práticos dos testes e validação do conceito.
🔄 [Fase 1: Coletor ICY Implementado](PHASE_1_ICY_COLLECTOR_IMPLEMENTATION.md)
Documentação completa da implementação do coletor ICY em background.
Conteúdo:
- Schema
enable_icy_epgno Radio IcyCollectorServicecom cron job automático- Endpoints da API para gestão
- Script de teste
- Arquitetura de dados e fluxo
- Guia de uso em produção
- Performance e escalabilidade
- Melhorias futuras
Quando ler: Para entender como o sistema foi implementado e como usá-lo.
🎯 Quick Start
1. Ativar Coleta para uma Rádio
Via API:
# Só admins com escrita (adminRole: admin); um usuário ou um viewer recebe 403.
curl -X POST http://localhost:3000/api/radios/{radioId}/icy-epg/enable \
-H "Authorization: Bearer {token de admin}"
Via MongoDB:
db.radios.updateOne({ _id: ObjectId('...') }, { $set: { enable_icy_epg: true } });
2. Monitorar Coleta
# Ver estatísticas
curl http://localhost:3000/api/radios/icy-epg/stats \
-H "Authorization: Bearer {token}"
# Listar rádios com coleta ativa
curl http://localhost:3000/api/radios/icy-epg/enabled
3. Analisar Padrões (após 2-4 semanas)
npx ts-node apps/api/src/scripts/analyze-icy-patterns.ts {radioId}
📊 Status Atual
| Fase | Status | Data |
|---|---|---|
| Fase 4: Análise de Viabilidade | ✅ Completa | 24 dez 2025 |
| Fase 4: Testes de Prova de Conceito | ✅ Completa | 24 dez 2025 |
| Fase 1: Coletor ICY Background | ✅ Implementado | 24 dez 2025 |
| Fase 2: Acúmulo de Dados | 🔄 Em Progresso | 2-4 semanas |
| Fase 3: Geração Automática EPG | ⏳ Pendente | Fev 2026 |
🔑 Conceitos-Chave
ICY Metadata
Protocolo Shoutcast/Icecast que transmite informações sobre o que está a tocar (StreamTitle) junto com o stream de áudio.
Padrões Históricos
Análise de capturas ICY ao longo de semanas para identificar programas que repetem nos mesmos horários e dias da semana.
Enable ICY EPG
Flag booleana no schema Radio que controla se a rádio deve ter ICY metadata coletado automaticamente.
Viabilidade Score
Métrica (0-100) que indica se uma rádio tem dados suficientes e padrões consistentes para geração de EPG automático.
🛠️ Scripts Disponíveis
# Seed dados de teste (4 semanas simuladas)
npx ts-node apps/api/src/scripts/seed-icy-history.ts
# Analisar padrões de uma rádio
npx ts-node apps/api/src/scripts/analyze-icy-patterns.ts {radioId} [weeksBack]
# Testar coletor
npx ts-node apps/api/src/scripts/test-icy-collector.ts [radioId]
📖 Documentação Relacionada
- Radio Schedules & EPG - Sistema geral de EPG
- ICY Metadata Implementation - Extração de metadata ICY
- Submit Schedule API - Submissão manual de programação
- Scripts Documentation - Todos os scripts disponíveis
💡 Perguntas Frequentes
Q: Quanto tempo leva para ter EPG automático?
A: 2-4 semanas de coleta contínua para análise de padrões.
Q: Funciona com todas as rádios?
A: Apenas rádios que: (1) suportam ICY metadata, (2) têm programação regular (não só música).
Q: Como sei se minha rádio é viável?
A: Execute analyze-icy-patterns.ts após 4 semanas. Score >50 = viável.
Q: Substitui outras fontes de EPG?
A: Não, é complementar. Ordem: user-submitted → MyTuner → ICY patterns.
Q: Quanto storage consome?
A: ~2MB/mês por rádio (com coleta a cada 10 minutos).
🚀 Próximos Passos
- ✅ Concluído: Infraestrutura de coleta implementada
- 🔄 Em curso: Acúmulo de dados (aguardar 2-4 semanas)
- ⏳ Futuro: Implementar geração automática de EPG
- ⏳ Futuro: Dashboard de monitoramento e análise
📞 Suporte
Para questões técnicas sobre este sistema:
- Consulte a documentação detalhada de cada fase
- Verifique logs:
[IcyCollectorService] - Endpoints de debug:
/api/radios/icy-epg/stats