>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
TypeScript

zyfun ontleed — een modulaire speler voor streams en IPTV gebouwd op Electron

Als je ooit hebt geprobeerd om IPTV of netwerkvideo af te spelen op een desktop, ben je waarschijnlijk twee uitersten tegengekomen. Aan de ene kant staan logge all-in-one oplossingen zoals Kodi, die honderden megabytes aan afhankelijkheden meeslepen en overweldigen met complexe interfaces. Aan de andere kant staan karige hulpprogramma's waarbij je afspeellijsten handmatig in tekstconfiguraties moet insluiten zonder echte zoekfunctie of synchronisatie.

Onlangs stuitte ik op zyfun. Het is een directe opvolger van de populaire ZY-Player, volledig herschreven met een moderne tech stack. Het project heeft inmiddels meer dan 8.800 sterren verzameld op GitHub, maar buiten de Aziatische gemeenschap kent bijna niemand het. De reden is simpel: de documentatie is in het Chinees en machinevertalingen zijn niet altijd accuraat. Toch is de technische architectuur achter het project het onderzoeken waard.

zyfun logo

Wat zit er onder de motorkap

Architectonisch gezien is zyfun een desktoptoepassing gebouwd op Electron, Vue 3, Vite en TypeScript. De auteurs kozen voor TDesign als componentenbibliotheek voor de interface.

De applicatie werkt als een thin client. Het bevat geen ingebouwde content en fungeert als handler voor externe bronnen. Je voert de client een gestructureerd JSON-configuratiebestand en de applicatie verzorgt het parseren van gegevens, filteren, catalogus zoeken en stream afspelen.

Movies

Streams

Belangrijke technische beslissingen

De codebase van het project bevat verschillende interessante oplossingen die het onderscheiden van typische zelfgemaakte spelers.

1. Modulaire bronadapters

In plaats van starre parseerlogica hebben de auteurs een adaptersysteem geïmplementeerd (typen T0 tot en met T4). Dit helpt om totaal verschillende backends te verbinden:

  • T0 en T1: klassieke REST-interfaces met XML- of JSON-responses.
  • T3 en T4: scriptadapters die ondersteuning bieden voor het uitvoeren van aangepaste handlers in JavaScript (DRPy), CatVod en Python.
  • Bestandsopslagverbindingen via het Alist-protocol.

Dankzij dit systeem kun je een nieuwe filmsite of thuis-NAS-catalogus toevoegen door simpelweg het veldtoewijzingsschema te beschrijven in het configuratiebestand, zonder de binary opnieuw te hoeven bouwen.

2. Stream sniffer via Chrome DevTools Protocol

Veel online bioscopen verbergen directe streamlinks achter complexe scripts. Meestal worden dergelijke taken opgelost via verborgen iframes, wat vaak de pagina breekt.

In zyfun wordt streaminterceptie geïmplementeerd via CDP (Chrome DevTools Protocol). De applicatie opent de doel-URL in een geïsoleerde Chromium-context, abonneert zich op netwerkniveau-evenementen Network.requestWillBeSent en vangt bestandslinks .m3u8 of .mp4. Deze aanpak werkt betrouwbaarder dan heuristische regex-matching.

Stream sniffer

3. Verwisselbare videokernen

Binnen de applicatie is er geen harde koppeling aan één speler. Je kunt de gewenste engine selecteren in de instellingen:

  • XGPlayer (ontwikkeld door het ByteDance-team)
  • ArtPlayer
  • Externe binary via systeemaanroep (bijvoorbeeld mpv of VLC met hardware-decodering)

Als de native webspeler zware bitrate of een specifieke codec niet aankan, gaat de stream met één klik naar externe mpv.

Player

History

4. Synchronisatie en ingebouwde AI

Bekijkgeschiedenis, bladwijzers en bronconfiguratie synchroniseren via WebDAV of iCloud. Dit is handig als je de app op meerdere machines gebruikt.

De auteurs hebben ook integratie met de OpenAI API toegevoegd. De client kan verzoeken sturen naar het geselecteerde taalmodel om snel een korte plotbeschrijving of aanbevelingen voor vergelijkbare releases te krijgen.

Onder de handige dagelijkse functies: de instellingen bevatten een Boss Key-functie. Door op de sneltoets te drukken (standaard Shift+Cmd+Z op macOS) verbergt de applicatie onmiddellijk het venster naar de systeemvak en dempt het geluid.

Hoe de configuratie werkt

Alle brongegevens worden geïmporteerd via één JSON-document. De structuur is verdeeld in onafhankelijke blokken: site voor VOD-catalogi, iptv voor afspeellijsten, channel voor individuele streams en analyze voor link-resolvers.

Zo ziet een standaard bronbeschrijving eruit:

Config

Installatie en platforms

Vooraf gebouwde pakketten zijn beschikbaar voor Windows (x64, arm64), macOS (Intel en Apple Silicon) en Linux (AppImage, deb, rpm, AUR-pakket).

Bij de installatie op macOS kan het systeem de start van een niet-ondertekende applicatie blokkeren. Dit wordt omzeild door de standaard quarantine-attribute reset:

macOS

Op Linux, bij het uitvoeren van AppImage op sommige distributies, is de libfuse2-bibliotheek vereist:

Linux

Samenvatting

zyfun bleek een solide hulpmiddel te zijn voor wie zijn mediastreams wil beheren zonder afhankelijk te zijn van proprietaire diensten.

Voor wie is dit project nuttig:

  • IPTV-liefhebbers die een strakke speler nodig hebben met EPG-ondersteuning en handige kanaalgroepering.
  • Eigenaren van thuismediaservers die verschillende API's in één client willen consolideren.
  • Vue- en Electron-ontwikkelaars die op zoek zijn naar een werkend voorbeeld van Chrome DevTools Protocol-integratie voor achtergrondnetwerkverkeeranalyse.

De broncode is open onder de AGPL-3.0-licentie. Als je op zoek bent naar een allesomvattende streamingclient, is de repository zeker de moeite waard om te bekijken.

Gerelateerde projecten