How alparslancevik/occatv works
OccaTV is a Windows IPTV and media-center application. A user adds an M3U or Xtream source, the local server builds searchable live/VOD/series libraries, and the interface requests playback through a loopback-only gateway backed by FFmpeg; YouTube uses yt-dlp. Separate branches cover XMLTV guide matching, reminders and recordings, playback controls, and channel health. The sampled server and library code support the core orchestration links; some feature wiring is documented in the README but its handlers were not sampled.
Main entry points: http-server.mjs Local media server · main.cjs Electron host · index.html Player interface · library.mjs Channel library
Components 22
Desktop and interface
- Electron host
desktop/main.cjs - Player interface
public/index.html - Local media server
src/http-server.mjs - Server launcher
src/server.mjs
Source and guide
- Playlist config
src/config.mjs - Channel library
src/library.mjs - M3U parser
src/m3u-parser.mjs - Xtream loader
src/xtream.mjs - EPG guide
src/epg.mjs
Playback services
- Media session
src/media-session.mjs - YouTube resolver
src/youtube.mjs - Media probe
src/media-probe.mjs - Subtitle service
src/subtitles.mjs - Live buffer
src/timeshift.mjs
Viewing operations
- Channel health
src/health-monitor.mjs - Plan scheduler
src/scheduler.mjs - Recording service
src/recording.mjs
Other components
- Viewer
- IPTV and EPG sources
- FFmpeg
- yt-dlp
- User data and cache
Connections 29
- Viewer → Electron host: starts app
- Electron host → Local media server: starts server
- Electron host → Player interface: loads interface
- Server launcher → Local media server: starts server
- Player interface → Local media server: requests API
- Local media server → Playlist config: loads config
- Local media server → Channel library: loads sources
- Channel library → M3U parser: parses M3U
- Channel library → Xtream loader: loads Xtream
- IPTV and EPG sources → M3U parser: provides playlists
- IPTV and EPG sources → Xtream loader: provides account
- Local media server → EPG guide: loads guide
- IPTV and EPG sources → EPG guide: provides XMLTV
- Player interface → Local media server: requests playback
- Local media server → Media session: dispatches stream
- Media session → FFmpeg: runs engine
- Local media server → YouTube resolver: resolves link
- YouTube resolver → yt-dlp: runs resolver
- Local media server → Media probe: requests details
- Local media server → Subtitle service: serves subtitles
- Local media server → Live buffer: manages buffer
- Local media server → Channel health: checks channels
- Local media server → Plan scheduler: manages plans
- Local media server → Recording service: starts recordings
- Local media server → User data and cache: reads and writes
- EPG guide → User data and cache: caches guide
- Channel health → User data and cache: persists results
- Plan scheduler → User data and cache: persists schedules
- Recording service → User data and cache: stores recordings