Dissecando o zyfun — um player modular para streams e IPTV construído com Electron
Se você já tentou configurar IPTV ou reprodução de vídeo em rede em um desktop, provavelmente encontrou dois extremos. De um lado estão soluções completas e pesadas como o Kodi, que puxam centenas de megabytes de dependências e sobrecarregam com interfaces complexas. Do outro lado estão utilitários minimalistas onde você tem que inserir manualmente playlists em arquivos de configuração de texto sem busca adequada ou sincronização.
Recentemente encontrei o zyfun. É um sucessor direto do popular ZY-Player, completamente reescrito usando uma stack moderna. O projeto já reuniu mais de 8.800 estrelas no GitHub, mas poucos fora da comunidade asiática o conhecem. A razão é simples: a documentação está em chinês e as traduções automáticas nem sempre são precisas. Ainda assim, a engenharia por trás do projeto merece ser examinada.
O que está sob o capô
Arquiteturalmente, o zyfun é uma aplicação desktop construída com Electron, Vue 3, Vite e TypeScript. Os autores escolheram o TDesign como biblioteca de componentes para a interface.
A aplicação funciona como um thin client. Não contém conteúdo embutido e atua como um manipulador para fontes externas. Você alimenta o cliente com um arquivo JSON estruturado, e a aplicação cuida da análise de dados, filtragem, busca no catálogo e reprodução de streams.


Principais decisões de engenharia
O código-fonte do projeto contém várias soluções interessantes que o diferenciam de players caseiros típicos.
1. Adaptadores de fontes modulares
Em vez de lógica rígida de parsing, os autores implementaram um sistema de adaptadores (tipos T0 a T4). Isso ajuda a conectar backends completamente diferentes:
- T0 e T1: interfaces REST clássicas com respostas em XML ou JSON.
- T3 e T4: adaptadores de script que suportam execução de manipuladores personalizados em JavaScript (DRPy), CatVod e Python.
- Conexões de armazenamento de arquivos via protocolo Alist.
Graças a isso, você pode adicionar um novo site de filmes ou catálogo NAS doméstico simplesmente descrevendo o esquema de mapeamento de campos no arquivo de configuração, sem recompilar o binário.
2. Sniffer de streams via Chrome DevTools Protocol
Muitos cinemas online escondem links de stream direto atrás de scripts complexos. Normalmente essas tarefas são resolvidas através de iframes ocultos, o que frequentemente quebra a página.
No zyfun, a interceptação de streams é implementada via CDP (Chrome DevTools Protocol). A aplicação abre a URL alvo em um contexto Chromium isolado, assina eventos de nível de rede Network.requestWillBeSent e captura links de arquivos .m3u8 ou .mp4. Essa abordagem funciona de forma mais confiável do que correspondência heurística com regex.
3. Núcleos de vídeo intercambiáveis
Dentro da aplicação, não há vinculação rígida a um único player. Você pode selecionar o motor desejado nas configurações:
- XGPlayer (desenvolvido pela equipe da ByteDance)
- ArtPlayer
- Binário externo via chamada de sistema (por exemplo, mpv ou VLC com decodificação por hardware)
Se o player web nativo não conseguir lidar com bitrate pesado ou codec específico, o stream vai para o mpv externo com um clique.


4. Sincronização e IA embutida
Histórico de visualização, favoritos e configuração de fontes sincronizam via WebDAV ou iCloud. Isso é conveniente se você usa o aplicativo em várias máquinas.
Os autores também adicionaram integração com a API da OpenAI. O cliente pode enviar requisições ao modelo de linguagem selecionado para obter rapidamente um resumo breve do enredo ou recomendações de lançamentos similares.
Entre os toques agradáveis do dia a dia: as configurações incluem uma função de Boss Key. Pressionar o atalho de teclado (Shift+Cmd+Z por padrão no macOS) oculta instantaneamente a janela na bandeja e silencia o áudio.
Como funciona a configuração
Todos os bancos de dados de fontes são importados via um único documento JSON. A estrutura é dividida em blocos independentes: site para catálogos VOD, iptv para playlists, channel para streams individuais e analyze para resolvedores de links.
Aqui está como fica uma descrição padrão de fonte:
Instalação e plataformas
Pacotes pré-construídos estão disponíveis para Windows (x64, arm64), macOS (Intel e Apple Silicon) e Linux (AppImage, deb, rpm, pacote AUR).
Ao instalar no macOS, o sistema pode bloquear a execução de um aplicativo não assinado. Isso é contornado pelo reset padrão do atributo de quarantine:
No Linux, ao executar o AppImage em algumas distribuições, a biblioteca libfuse2 será necessária:
Resumo
O zyfun se mostrou uma ferramenta sólida para quem quer controlar seus streams de mídia sem ficar preso a serviços proprietários.
Quem se beneficiaria do projeto:
- Entusiastas de IPTV que precisam de um player limpo com suporte a EPG e agrupamento conveniente de canais.
- Proprietários de servidores de mídia caseiros que querem consolidar diferentes APIs em um único cliente.
- Desenvolvedores Vue e Electron que procuram um exemplo funcional de integração com o Chrome DevTools Protocol para análise de tráfego de rede em segundo plano.
O código-fonte é aberto sob a licença AGPL-3.0. Se você está procurando um cliente de streaming completo, o repositório definitivamente vale a pena conferir.
Projetos relacionados