How tbeezy/ynotv works
ynoTV is a Windows desktop IPTV and media player: users configure sources, browse live channels and program guides or VOD catalogs, then play or record streams. The main workflow runs from the React app through source parsing and URL resolution to the embedded mpv player; SQLite-backed state supports channel, guide, and playback features. The README also documents local media, sports, DVR, and optional catalog/server integrations, represented as distinct capabilities. Several of those branches are supported by the README and file tree, but their internal call wiring was not sampled.
Main entry points: App.tsx App workflow · db/index.ts SQLite state · src/index.ts Playlist adapters · epg-streaming.ts EPG guide
Components 22
Desktop client
- App workflow
packages/ui/src/App.tsx - Preferences
packages/ui/src/stores/settingsStore.ts - SQLite state
packages/ui/src/db/index.ts
Live TV
- Playlist adapters
packages/local-adapter/src/index.ts - EPG guide
packages/ui/src/services/epg-streaming.ts - Channel management
packages/ui/src/components/settings/CategoryManager.tsx - Stream failover
packages/ui/src/services/failover-groups.ts
Media playback
- URL resolution
packages/ui/src/services/stream-resolver.ts - Playback controls
packages/ui/src/hooks/usePlayback.ts - DVR recording
packages/app/src-tauri/src/dvr/mod.rs - Device casting
packages/app/src-tauri/src/cast.rs
Libraries and discovery
- VOD catalog
packages/ui/src/components/VodPage.tsx - Media metadata
packages/ui/src/services/tmdb.ts - Local library
packages/ui/src/services/local-library/local-library.ts - Sports hub
packages/ui/src/components/sports/SportsHub.tsx - Stremio catalogs
packages/ui/src/services/stremio-api.ts - Nuvio integration
packages/ui/src/services/nuvio-api.ts - Jellyfin integration
packages/ui/src/services/jellyfin.ts
Native services
- Embedded mpv
packages/app/src-tauri/src/mpv_core.rs - Tauri bridge
packages/ui/src/services/tauri-bridge.ts
Other components
- Viewer
- Media services
Connections 30
- Viewer → App workflow: uses
- App workflow → Preferences: reads preferences
- App workflow → SQLite state: reads state
- App workflow → Playlist adapters: loads sources
- Playlist adapters → SQLite state: stores channel data
- App workflow → EPG guide: loads guide
- EPG guide → SQLite state: stores guide data
- App workflow → Channel management: opens management
- Channel management → SQLite state: updates categories
- App workflow → URL resolution: resolves playback URL
- App workflow → Playback controls: controls playback
- Playback controls → Tauri bridge: sends playback commands
- Tauri bridge → Embedded mpv: invokes native player
- App workflow → DVR recording: starts or schedules recordings
- DVR recording → SQLite state: stores recordings
- App workflow → Device casting: casts stream
- App workflow → VOD catalog: browses VOD
- VOD catalog → Media metadata: loads metadata
- Media metadata → Media services: queries catalog services
- App workflow → Local library: browses local media
- Local library → SQLite state: stores library state
- App workflow → Sports hub: opens sports
- Sports hub → Media services: loads scores and news
- App workflow → Stremio catalogs: uses catalogs
- Stremio catalogs → Media services: contacts addons and account
- App workflow → Nuvio integration: syncs account data
- Nuvio integration → Media services: syncs cloud data
- App workflow → Jellyfin integration: browses and plays server media
- Jellyfin integration → Media services: contacts server
- URL resolution → Media services: resolves stream sources