>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

Analiza zyfun — modularny odtwarzacz strumieni i IPTV zbudowany na Electron

Jeśli kiedykolwiek próbowałeś skonfigurować IPTV lub odtwarzanie wideo z sieci na komputerze stacjonarnym, prawdopodobnie natknąłeś się na dwie skrajności. Z jednej strony są rozbudowane rozwiązania all-in-one takie jak Kodi, które ściągają setki megabajtów zależności i przytłaczają złożonymi interfejsami. Z drugiej strony mamy skąpe narzędzia, w których trzeba ręcznie osadzać playlisty w plikach konfiguracyjnych bez właściwego wyszukiwania czy synchronizacji.

Ostatnio natknąłem się na zyfun. To bezpośredni następca popularnego ZY-Player, całkowicie przepisany przy użyciu nowoczesnego stacka. Projekt zgromadził już ponad 8 800 gwiazdek na GitHub, ale niewiele osób spoza azjatyckiej społeczności o nim wie. Powód jest prosty: dokumentacja jest w języku chińskim, a tłumaczenia maszynowe nie zawsze są dokładne. A jednak inżynieria stojąca za tym projektem zasługuje na bliższe przyjrzenie się.

logo zyfun

Co pod maską

Architektonicznie zyfun to aplikacja desktopowa zbudowana na Electron, Vue 3, Vite i TypeScript. Autorzy wybrali TDesign jako bibliotekę komponentów interfejsu.

Aplikacja działa jako lekki klient. Nie zawiera wbudowanej treści i służy jako handler dla zewnętrznych źródeł. Dostarczasz klientowi ustrukturyzowaną konfigurację JSON, a aplikacja zajmuje się parsowaniem danych, filtrowaniem, wyszukiwaniem w katalogu i odtwarzaniem strumieni.

Filmy

Strumienie

Kluczowe decyzje inżynieryjne

W kodzie źródłowym projektu znajduje się kilka interesujących rozwiązań, które wyróżniają go na tle typowych domowych odtwarzaczy.

1. Modułowe adaptery źródeł

Zamiast sztywnej logiki parsowania, autorzy zaimplementowali system adapterów (typy T0 przez T4). Pomaga to łączyć całkowicie różne backendy:

  • T0 i T1: klasyczne interfejsy REST z odpowiedziami XML lub JSON.
  • T3 i T4: adaptery skryptowe obsługujące wykonywanie niestandardowych handlerów w JavaScript (DRPy), CatVod i Python.
  • Połączenia z magazynem plików przez protokół Alist.

Dzięki temu możesz dodać nową stronę z filmami lub katalog NAS po prostu opisując mapowanie pól w pliku konfiguracyjnym, bez przebudowywania samego pliku binarnego.

2. Sniffer strumieni przez Chrome DevTools Protocol

Wiele kin online ukrywa bezpośrednie linki do strumieni za pomocą złożonych skryptów. Zazwyczaj takie zadania są rozwiązywane przez ukryte iframe, co często powoduje problemy ze stroną.

W zyfun przechwytywanie strumieni jest zaimplementowane przez CDP (Chrome DevTools Protocol). Aplikacja otwiera docelowy URL w izolowanym kontekście Chromium, subskrybuje zdarzenia na poziomie sieci Network.requestWillBeSent i przechwytuje linki do plików .m3u8 lub .mp4. To podejście działa bardziej niezawodnie niż heurystyczne dopasowywanie wyrażeń regularnych.

Sniffer strumieni

3. Wymienne silniki wideo

Wewnątrz aplikacji nie ma twardego powiązania z jednym odtwarzaczem. Możesz wybrać żądany silnik w ustawieniach:

  • XGPlayer (opracowany przez zespół ByteDance)
  • ArtPlayer
  • Zewnętrzny plik binarny przez wywołanie systemowe (na przykład mpv lub VLC z dekodowaniem sprzętowym)

Jeśli natywny odtwarzacz webowy nie radzi sobie z dużym bitrate lub konkretnym kodekiem, strumień jednym kliknięciem trafia do zewnętrznego mpv.

Odtwarzacz

Historia

4. Synchronizacja i wbudowana AI

Historia oglądania, zakładki i konfiguracja źródeł synchronizują się przez WebDAV lub iCloud. Jest to wygodne, jeśli używasz aplikacji na wielu maszynach.

Autorzy dodali również integrację z API OpenAI. Klient może wysyłać żądania do wybranego modelu językowego, aby szybko uzyskać krótkie podsumowanie fabuły lub rekomendacje podobnych tytułów.

Wśród przyjemnych codziennych dodatków: w ustawieniach znajduje się funkcja Boss Key. Naciśnięcie skrótu klawiszowego (Shift+Cmd+Z domyślnie na macOS) natychmiast ukrywa okno do zasobnika systemowego i wycisza dźwięk.

Jak działa konfiguracja

Wszystkie bazy danych źródeł są importowane przez jeden dokument JSON. Struktura jest podzielona na niezależne bloki: site dla katalogów VOD, iptv dla playlist, channel dla pojedynczych strumieni i analyze dla resolverów linków.

Oto jak wygląda standardowy opis źródła:

Konfiguracja

Instalacja i platformy

Pakiety są dostępne dla Windows (x64, arm64), macOS (Intel i Apple Silicon) oraz Linux (AppImage, deb, rpm, pakiet AUR).

Przy instalacji na macOS system może zablokować uruchomienie niepodpisanej aplikacji. Omijamy to standardowym resetem atrybutu kwarantanny:

macOS

Na Linuksie, przy uruchamianiu AppImage na niektórych dystrybucjach, będzie wymagana biblioteka libfuse2:

Linux

Podsumowanie

zyfun okazał się solidnym narzędziem dla tych, którzy chcą kontrolować swoje strumienie medialne bez uzależnienia od zastrzeżonych usług.

Komu projekt może się przydać:

  • Entuzjaści IPTV, którzy potrzebują czystego odtwarzacza z obsługą EPG i wygodnym grupowaniem kanałów.
  • Właściciele domowych serwerów medialnych, którzy chcą konsolidować różne API w jednym kliencie.
  • Deweloperzy Vue i Electron szukający działającego przykładu integracji Chrome DevTools Protocol do analizy ruchu sieciowego w tle.

Źródła są otwarte na licencji AGPL-3.0. Jeśli szukasz pochłaniającego wszystko klienta streamingowego, repozytorium zdecydowanie warto sprawdzić.

Powiązane projekty