How nrn-world/doggy-player works
Doggy Player is an Electron desktop video player. The main workflow is selecting media, resolving local playback through Electron when needed, and controlling playback in the React interface. The README also documents playlist management, IPTV, subtitles, and picture/audio controls; the sampled frontend is a single large App module, so those capabilities share its path. Source excerpts support the media and IPTV IPC links, but not detailed wiring for every documented feature.
Main entry points: App.tsx Player Interface · main.js Media IPC · telemetry.js Usage Telemetry
Components 18
Playback and Controls
- Player Interface
src/App.tsx - Playback Controls
src/App.tsx - Video Display
src/App.tsx - Picture Controls
src/App.tsx - Audio and Subtitles
src/App.tsx - Playlist Manager
src/App.tsx
Media Handling
- Local Media
- Media IPC
electron/main.js - Stream Server
electron/main.js - FFmpeg Processing
electron/main.js - Seek Optimization
electron/main.js
IPTV
- IPTV Browser
src/App.tsx - IPTV Fetch Handler
electron/main.js
Desktop Runtime
- Electron Window
electron/main.js - App Updater
electron/main.js - Usage Telemetry
electron/telemetry.js
Other components
- Viewer
- IPTV Provider
Connections 18
- Viewer → Player Interface: uses
- Viewer → Local Media: opens
- Player Interface → Playback Controls: operates
- Player Interface → Video Display: renders
- Player Interface → Picture Controls: controls
- Player Interface → Audio and Subtitles: configures
- Player Interface → Playlist Manager: manages
- Player Interface → Media IPC: invokes IPC
- Media IPC → Stream Server: serves media
- Stream Server → FFmpeg Processing: transcodes
- Media IPC → FFmpeg Processing: optimizes seeking
- Media IPC → Seek Optimization: reads/writes
- Player Interface → IPTV Browser: browses
- IPTV Browser → IPTV Fetch Handler: invokes IPC
- IPTV Fetch Handler → IPTV Provider: fetches data
- Electron Window → Player Interface: hosts
- Electron Window → App Updater: initializes
- Electron Window → Usage Telemetry: initializes