Analizando zyfun — un reproductor modular para streams e IPTV construido con Electron
Si alguna vez has intentado configurar IPTV o reproducción de video en red en una computadora de escritorio, probablemente te hayas encontrado con dos extremos. Por un lado están las soluciones todo-en-uno abultadas como Kodi, que arrastran cientos de megabytes de dependencias y abruman con interfaces complejas. Por el otro están las utilidades espartanas donde tienes que incrustar manualmente listas de reproducción en archivos de texto sin una búsqueda o sincronización adecuada.
Hace poco descubrí zyfun. Es un sucesor directo del popular ZY-Player, reescrito completamente usando un stack moderno. El proyecto ya ha acumulado más de 8.800 estrellas en GitHub, pero pocos fuera de la comunidad asiática lo conocen. La razón es simple: la documentación está en chino y las traducciones automáticas no siempre son precisas. Sin embargo, la ingeniería detrás del proyecto merece un análisis detallado.
Qué hay bajo el capó
Arquitectónicamente, zyfun es una aplicación de escritorio construida sobre Electron, Vue 3, Vite y TypeScript. Los autores eligieron TDesign como la biblioteca de componentes para la interfaz.
La aplicación funciona como un cliente ligero. No contiene contenido integrado y actúa como un manipulador de fuentes externas. Le proporcionas al cliente un archivo JSON estructurado con la configuración, y la aplicación se encarga del análisis de datos, filtrado, búsqueda en el catálogo y reproducción de streams.


Decisiones clave de ingeniería
El código base del proyecto contiene varias soluciones interesantes que lo distinguen de los reproductores caseros típicos.
1. Adaptadores de fuentes modulares
En lugar de lógica de análisis rígida, los autores implementaron un sistema de adaptadores (tipos T0 a T4). Esto ayuda a conectar backends completamente diferentes:
- T0 y T1: interfaces REST clásicas con respuestas XML o JSON.
- T3 y T4: adaptadores de script que soportan ejecución de manejadores personalizados en JavaScript (DRPy), CatVod y Python.
- Conexiones de almacenamiento de archivos mediante el protocolo Alist.
Gracias a esto, puedes agregar un nuevo sitio de películas o catálogo NAS doméstico simplemente describiendo el esquema de mapeo de campos en el archivo de configuración, sin reconstruir el binario en sí.
2. Detector de streams via Chrome DevTools Protocol
Muchos cines en línea ocultan los enlaces directos de stream detrás de scripts complejos. Por lo general, estas tareas se resuelven mediante iframes ocultos, lo que frecuentemente rompe la página.
En zyfun, la interceptación de streams se implementa mediante CDP (Chrome DevTools Protocol). La aplicación abre la URL objetivo en un contexto Chromium aislado, se suscribe a eventos a nivel de red Network.requestWillBeSent y captura los enlaces de archivo .m3u8 o .mp4. Este enfoque funciona de manera más confiable que el emparejamiento heurístico con expresiones regulares.
3. Núcleos de video intercambiables
Dentro de la aplicación, no hay un enlace duro a un solo reproductor. Puedes seleccionar el motor deseado en la configuración:
- XGPlayer (desarrollado por el equipo de ByteDance)
- ArtPlayer
- Binario externo mediante llamada al sistema (por ejemplo, mpv o VLC con decodificación por hardware)
Si el reproductor web nativo no puede manejar un bitrate pesado o un códec específico, el stream va a mpv externo con un clic.


4. Sincronización e IA integrada
El historial de visualización, marcadores y configuración de fuentes se sincronizan mediante WebDAV o iCloud. Esto es conveniente si usas la aplicación en varias máquinas.
Los autores también agregaron integración con la API de OpenAI. El cliente puede enviar solicitudes al modelo de lenguaje seleccionado para obtener rápidamente un breve resumen de la trama o recomendaciones de títulos similares.
Entre los toques prácticos del día a día: la configuración incluye una función de Tecla Jefe. Al presionar el atajo de teclado (Shift+Cmd+Z por defecto en macOS) se oculta instantáneamente la ventana en la bandeja del sistema y se silencia el audio.
Cómo funciona la configuración
Todas las bases de datos de fuentes se importan mediante un único documento JSON. La estructura se divide en bloques independientes: site para catálogos VOD, iptv para listas de reproducción, channel para streams individuales y analyze para resolvedores de enlaces.
Así es como se ve una descripción estándar de fuente:
Instalación y plataformas
Hay paquetes preconstruidos disponibles para Windows (x64, arm64), macOS (Intel y Apple Silicon) y Linux (AppImage, deb, rpm, paquete AUR).
Al instalar en macOS, el sistema puede bloquear el lanzamiento de una aplicación sin firma. Esto se evita mediante el restablecimiento estándar del atributo de cuarentena:
En Linux, al ejecutar AppImage en algunas distribuciones, se requerirá la biblioteca libfuse2:
Resumen
zyfun resultó ser una herramienta sólida para quienes quieren controlar sus streams de medios sin estar atados a servicios propietarios.
¿A quién beneficiara el proyecto:
- Aficionados al IPTV que necesitan un reproductor limpio con soporte EPG y agrupación conveniente de canales.
- Propietarios de servidores multimedia domésticos que quieren consolidar diferentes APIs en un solo cliente.
- Desarrolladores de Vue y Electron que buscan un ejemplo funcional de integración con Chrome DevTools Protocol para análisis de tráfico de red en segundo plano.
El código fuente está abierto bajo la licencia AGPL-3.0. Si buscas un cliente de streaming que no lo consuma todo, definitivamente vale la pena revisar el repositorio.
Proyectos relacionados