>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
TypeScript

Décortiquer zyfun — un lecteur modulaire pour les flux et l'IPTV basé sur Electron

Si vous avez déjà essayé de configurer l'IPTV ou la lecture vidéo en réseau sur un ordinateur de bureau, vous avez probablement rencontré deux extrêmes. D'un côté, il y a les solutions tout-en-un volumineuses comme Kodi, qui entraînent des centaines de mégaoctets de dépendances et submergent avec des interfaces complexes. De l'autre côté, il y a des utilitaires spartiates où vous devez intégrer manuellement des playlists dans des fichiers de configuration texte sans recherche ni synchronisation appropriées.

Récemment, je suis tombé sur zyfun. C'est un successeur direct du populaire ZY-Player, complètement réécrit en utilisant une pile moderne. Le projet a déjà recueilli plus de 8 800 étoiles sur GitHub, mais peu de gens en dehors de la communauté asiatique le connaissent. La raison est simple : la documentation est en chinois et les traductions automatiques ne sont pas toujours précises. Pourtant, l'ingénierie derrière ce projet mérite d'être examinée.

zyfun logo

Ce qui se cache sous le capot

Sur le plan architectural, zyfun est une application de bureau construite avec Electron, Vue 3, Vite et TypeScript. Les auteurs ont choisi TDesign comme bibliothèque de composants pour l'interface.

L'application fonctionne comme un client léger. Elle ne contient aucun contenu intégré et sert de gestionnaire pour les sources externes. Vous fournissez au client un fichier de configuration JSON structuré, et l'application s'occupe de l'analyse des données, du filtrage, de la recherche dans le catalogue et de la lecture des flux.

Movies

Streams

Décisions d'ingénierie clés

La base de code du projet contient plusieurs solutions intéressantes qui le distinguent des lecteurs maison typiques.

1. Adaptateurs de sources modulaires

Au lieu d'une logique d'analyse rigide, les auteurs ont implémenté un système d'adaptateurs (types T0 à T4). Cela permet de connecter des backends complètement différents :

  • T0 et T1 : interfaces REST classiques avec des réponses XML ou JSON.
  • T3 et T4 : adaptateurs de script prenant en charge l'exécution de gestionnaires personnalisés en JavaScript (DRPy), CatVod et Python.
  • Connexions de stockage de fichiers via le protocole Alist.

Grâce à cela, vous pouvez ajouter un nouveau site de films ou un catalogue NAS domestique simplement en décrivant le schéma de mapping des champs dans le fichier de configuration, sans recompiler le binaire lui-même.

2. Détecteur de flux via Chrome DevTools Protocol

De nombreux cinémas en ligne masquent les liens de flux directs derrière des scripts complexes. Habituellement, ces tâches sont résolues via des iframes masqués, ce qui casse souvent la page.

Dans zyfun, l'interception des flux est implémentée via CDP (Chrome DevTools Protocol). L'application ouvre l'URL cible dans un contexte Chromium isolé, s'abonne aux événements au niveau réseau Network.requestWillBeSent et capture les liens de fichiers .m3u8 ou .mp4. Cette approche fonctionne de manière plus fiable que la correspondance regex heuristique.

Stream sniffer

3. Noyaux vidéo interchangeables

À l'intérieur de l'application, il n'y a pas de liaison stricte à un seul lecteur. Vous pouvez sélectionner le moteur souhaité dans les paramètres :

  • XGPlayer (développé par l'équipe ByteDance)
  • ArtPlayer
  • Binaire externe via appel système (par exemple, mpv ou VLC avec décodage matériel)

Si le lecteur web natif ne peut pas gérer un débit élevé ou un codec spécifique, le flux passe à mpv externe en un clic.

Player

History

4. Synchronisation et IA intégrée

L'historique de visionnage, les favoris et la configuration des sources se synchronisent via WebDAV ou iCloud. C'est pratique si vous utilisez l'application sur plusieurs machines.

Les auteurs ont également ajouté une intégration avec l'API OpenAI. Le client peut envoyer des requêtes au modèle de langage sélectionné pour obtenir rapidement un bref résumé du scénario ou des recommandations pour des sorties similaires.

Parmi les détails pratiques du quotidien : les paramètres incluent une fonction Boss Key. Appuyer sur le raccourci (Shift+Cmd+Z par défaut sur macOS) masque instantanément la fenêtre dans la barre d'état système et coupe le son.

Comment fonctionne la configuration

Toutes les bases de données de sources sont importées via un seul document JSON. La structure est divisée en blocs indépendants : site pour les catalogues VOD, iptv pour les playlists, channel pour les flux individuels et analyze pour les résolveurs de liens.

Voici à quoi ressemble une description de source standard :

Config

Installation et plateformes

Des paquets préconstruits sont disponibles pour Windows (x64, arm64), macOS (Intel et Apple Silicon) et Linux (AppImage, deb, rpm, paquet AUR).

Lors de l'installation sur macOS, le système peut bloquer le lancement d'une application non signée. Cela se contourne par la réinitialisation standard de l'attribut de mise en quarantaine :

macOS

Sur Linux, lors de l'exécution d'AppImage sur certaines distributions, la bibliothèque libfuse2 sera nécessaire :

Linux

Résumé

zyfun s'est avéré être un outil solide pour ceux qui veulent contrôler leurs flux multimédias sans être liés à des services propriétaires.

À qui le projet profitera-t-il :

  • Aux passionnés d'IPTV qui ont besoin d'un lecteur propre avec support EPG et regroupement pratique des chaînes.
  • Aux propriétaires de serveurs multimédias domestiques qui veulent consolider différentes API dans un seul client.
  • Aux développeurs Vue et Electron à la recherche d'un exemple fonctionnel d'intégration du Chrome DevTools Protocol pour l'analyse du trafic réseau en arrière-plan.

Les sources sont ouvertes sous licence AGPL-3.0. Si vous cherchez un client de streaming qui ne vous enferme pas, le dépôt mérite définitivement d'être consulté.

Projets similaires