🔬

EPG via Padrões ICY

🔬 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:

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:

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:

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


💡 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

  1. ✅ Concluído: Infraestrutura de coleta implementada
  2. 🔄 Em curso: Acúmulo de dados (aguardar 2-4 semanas)
  3. ⏳ Futuro: Implementar geração automática de EPG
  4. ⏳ Futuro: Dashboard de monitoramento e análise

📞 Suporte

Para questões técnicas sobre este sistema: