How guovin/tv works
IPTV-API collects local and subscribed channel sources, normalizes and aggregates candidates, checks stream availability and quality, then generates categorized playlists and serves results. Users can initiate updates through the desktop or legacy Tk interface, or run the service/API workflow. The README also documents EPG, RTMP streaming, playback screenshots, and result management. Sampled source confirms parts of the desktop task dispatch, source fetching, EPG fetching, persistence, and service behavior; some capability links reflect README documentation rather than inspected implementation.
Main entry points: main.py Update workflow · app.py Desktop app · main_window.py Main window · channel_quality.py Stream validation
Components 20
User interfaces
- Desktop app
desktop_ui/app.py - Main window
desktop_ui/main_window.py - Update controller
desktop_ui/controller.py - Tk interface
tkinter_ui/tkinter_ui.py
Update pipeline
- Update workflow
main.py - Channel operations
utils/channel_operations.py - Subscription fetch
updates/subscribe/request.py - Source aggregation
utils/aggregator.py - Channel matching
utils/alias.py - Stream validation
utils/channel_quality.py - Media probing
utils/ffmpeg/probe.py
Results and storage
- Result repository
utils/channel_repository.py - Playlist artifacts
utils/artifacts.py
Streaming features
- EPG fetch
updates/epg/request.py - RTMP streaming
service/rtmp.py - Playback tools
desktop_ui/playback.py
Runtime and service
- HTTP service
service/app.py - Configuration
utils/config.py
Other components
- User
- Source endpoints
Connections 24
- User → Desktop app: starts app
- Desktop app → Main window: opens UI
- User → Tk interface: configures
- Main window → Update controller: dispatches tasks
- Update controller → Channel operations: invokes operation
- Tk interface → Configuration: updates settings
- Channel operations → Update workflow: runs update
- Update workflow → Subscription fetch: fetches sources
- Subscription fetch → Source endpoints: requests streams
- Update workflow → EPG fetch: fetches guide
- EPG fetch → Source endpoints: requests listings
- Update workflow → Source aggregation: aggregates candidates
- Update workflow → Channel matching: matches channels
- Update workflow → Stream validation: tests candidates
- Stream validation → Media probing: probes media
- Update workflow → Result repository: persists results
- Result repository → Playlist artifacts: provides result data
- Update workflow → Playlist artifacts: generates playlists
- Desktop app → HTTP service: launches service
- HTTP service → Result repository: serves results
- HTTP service → RTMP streaming: routes streaming
- Main window → Playback tools: previews streams
- Stream validation → Source endpoints: checks availability
- Update workflow → Configuration: reads settings