# StreamFlow PRO V2 Elite

Um player de streaming web moderno e responsivo para reproduzir canais de TV via M3U com suporte a EPG (guia de programação eletrônico). Interface elegante com painel de informações desportivas integrado.

## 🎯 Funcionalidades

- ✨ **Player Moderno**: Interface elegante com design responsivo
- 📺 **Suporte M3U/M3U8**: Reproduz listas de canais em formato M3U
- 📅 **EPG Integrado**: Guia de programação eletrônico com horários dos canais
- ⚽ **Informações Desportivas**: 
  - Resultados e próximos jogos
  - Tabela da Liga Portuguesa
  - Resultados da Champions League
- 🔄 **Proxy com Cache**: Sistema de cache para otimizar requisições à API de futebol
- 🎨 **Extração de Cores**: Dominância dinâmica de cores baseada na imagem do canal
- 📱 **Responsivo**: Funciona perfeitamente em desktop, tablet e mobile

## 📋 Requisitos

- PHP 7.4+ com suporte a cURL
- Servidor Apache/Nginx (XAMPP recomendado)
- Navegador moderno (Chrome, Firefox, Safari, Edge)
- Conexão com internet para EPG e API de futebol

## 🚀 Instalação

### 1. Clonar/Descarregar o Projeto

```bash
# Clone o repositório ou descompacte os ficheiros
git clone <repositório>
cd streamflow-pro
```

### 2. Configurar o XAMPP

1. Coloque os ficheiros na pasta `htdocs` do XAMPP
2. Crie a pasta `cache` com permissões de escrita:
   ```bash
   mkdir cache
   chmod 755 cache
   ```

### 3. Iniciar o Servidor

```bash
# Inicie o XAMPP ou Apache + MySQL
# Acesse: http://localhost/
```

## ⚙️ Configuração

### URLs de Origem dos Canais

Os URLs dos canais e EPG podem ser configurados em `assets/script.js`:

```javascript
const EPG_URL = 'https://github.com/LITUATUI/M3UPT/raw/refs/heads/main/EPG/epg-m3upt.xml.gz';
const M3U_URL = 'https://raw.githubusercontent.com/LITUATUI/M3UPT/refs/heads/main/M3U/M3UPT.m3u';
```

### Token da API de Futebol

O projeto usa a API **football-data.org**. Para usar diferentes dados ou aumentar limites:

1. Registe-se em [football-data.org](https://www.football-data.org/)
2. Obtenha uma chave de API
3. Atualize o token em:
   - `assets/script.js`: `const API_TOKEN = 'seu_token_aqui'`
   - `proxy.php`: Procure por `X-Auth-Token`

## 📁 Estrutura de Ficheiros

```
streamflow-pro/
├── public/              # Árvore organizada usada pela app ativa
│   ├── index.html
│   ├── player.html
│   ├── assets/
│   │   ├── script.js
│   │   └── style.css
│   ├── data/
│   │   └── canais.json
│   └── server/
│       └── proxy.php
├── README.md            # Este ficheiro
├── cache/               # Pasta para cache de dados (criada automaticamente)
│   └── data-cache_*.json
└── tralha/              # Ficheiros adicionais
    ├── epg-m3upt.xml
    ├── M3UPT.m3u
    └── v1/              # Versão anterior
```

## 🎮 Como Usar

### Página Principal
1. Abra `http://localhost/index.html`
2. Selecione um canal da lista
3. O player iniciará automaticamente
4. Use os controlos do player para pausar, volume, etc.

### Painel de Informações Desportivas
1. Clique no ícone de **gráficos** na barra lateral
2. Abra as abas:
   - **JOGOS**: Próximos jogos e resultados
   - **LIGA PT**: Tabela da Liga Portuguesa
   - **UCL**: Resultados da Champions League

### Filtro de Canais
- Use a barra de pesquisa para filtrar canais por nome
- Os canais são carregados dinamicamente a partir do M3U

## 🔧 Endpoints Importantes

### Proxy de Requisições
```
GET /proxy.php?url=<URL_CODIFICADA>
```
Faz proxy de requisições com suporte a cache para dados de futebol.

**Exemplo:**
```
/proxy.php?url=https://api.football-data.org/v4/matches
```

### Cache
- **Localização**: `/cache`
- **Duração**:
   - API futebol (`.json`): 60s
   - EPG/M3U (`.xml`): 30min
   - Imagens (`.bin`): 6h
- **Limpeza automática**: o proxy remove entradas expiradas e mantém limites de tamanho/quantidade para evitar crescimento excessivo.

#### Limpeza manual imediata (quando a pasta cache estiver muito pesada)

```bash
find cache -type f -name 'data-cache_*' -delete
```

Para remover também o log de erros do proxy:

```bash
rm -f cache/proxy-hls-errors.log
```

#### Refresh diário do EPG (recomendado)

Na raiz do projeto, existe o script:

```bash
./scripts/refresh_epg_cache.sh
```

Ele remove `cache/epg-parsed.json` e `cache/data-cache_*.xml`, forçando o servidor a voltar a descarregar e parsear o EPG no próximo pedido autenticado.

Para agendar 1x por dia (24h), adicione ao `crontab` do servidor:

```bash
0 4 * * * /home/ubuntu/services/streamflow-site/scripts/refresh_epg_cache.sh >> /home/ubuntu/services/streamflow-site/html/cache/epg-refresh.log 2>&1
```

## 📡 APIs Utilizadas

1. **football-data.org**: Dados desportivos (resultados, tabelas, etc.)
2. **LITUATUI M3UPT**: Listas M3U e EPG para canais portugueses
3. **Color Thief**: Extração de cores dominantes de imagens

## 🐛 Resolução de Problemas

### Canais não carregam
- Verifique a conexão com internet
- Confirme que a URL do M3U está acessível
- Verifique a consola do navegador (F12) para erros

### EPG não sincroniza
- O EPG pode levar tempo a descarregar (ficheiro comprimido)
- Verifique a URL do EPG em `assets/script.js`
- Algumas TVs podem não ter dados de EPG disponíveis

### Informações desportivas em branco
- Verifique se o token da API está válido
- Confirme que o seu IP tem acesso à API
- Alguns planos de API têm limitações de requisições

### Pasta cache sem permissões
```bash
# No servidor, execute:
chmod 755 cache
```

## 📝 Licença

Este projeto usa trabalho de terceiros. Respeite as licenças:
- M3U e EPG: Respeitante dos termos de LITUATUI
- football-data.org: Conforme a sua licença de API
- Color Thief: MIT License

## 🤝 Contribuições

Sugestões e melhorias são bem-vindas!

## 📞 Suporte

Para problemas ou sugestões, verifique:
- Consola do navegador para erros JavaScript
- Logs do servidor Apache
- Permissões das pastas no servidor

---

**Versão**: 2.0 Elite  
**Atualizado**: 2026  
**Desenvolvedor**: StreamFlow Team
