Accessible IPTV Client is an accessible, keyboard-first IPTV player that works well with screen readers. It runs on Windows and Linux and supports playlists, EPG, catch-up, and casting.
- Screen reader friendly (NVDA, JAWS, Narrator, Orca)
- M3U / M3U+ playlists, Xtream Codes, and Stalker Portal sources
- Built-in player (libVLC via python-vlc) or external player support (VLC, MPC-HC, MPV, etc.)
- Channel groups, fast search, and EPG search
- XMLTV EPG support (
.xmland.xml.gz) - Catch-up/timeshift playback for supported channels
- Optional system tray minimize
- Casting support
- Download the latest release build from GitHub Releases.
- Unzip it somewhere like
C:\Apps\AccessibleIPTVClient\. - Run
IPTVClient.exe. - Add a playlist: Ctrl+M (Playlist Manager).
- Optional: add EPG sources: Ctrl+E (EPG Manager), then Ctrl+I to import.
- Pick a channel and press Enter to play.
- Python 3.11+
pippackages fromrequirements.txt- If you want the built-in player: VLC 3.0+ installed (python-vlc loads libVLC from your VLC install)
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python main.py- Ctrl+M - Playlist Manager
- Ctrl+E - EPG Manager
- Ctrl+I - Import EPG to database
- Ctrl+Q - Exit
- Enter - Play selected channel
- Context Menu / Apps Key - Channel options (including Catch-up if available)
- Space - Play/Pause
- Up / Down - Adjust volume (2% steps)
- Ctrl+Up / Ctrl+Down - Adjust volume (5% steps)
- F11 - Toggle fullscreen
- Escape - Exit fullscreen
- Tab - Navigate between controls
- During EPG import, a detailed log is written to your temp directory as
iptvclient_epg_debug.log. .xml.gzguides are supported and are handled via a safe download/verify workflow.
The internal player sizes its network buffer dynamically. You can tune it in iptvclient.conf:
internal_player_buffer_seconds(default ~2s)internal_player_max_buffer_seconds(default ~18s)internal_player_variant_max_mbps(HLS quality cap in Mbps, 0 = no cap)
Lower values start faster; higher values are more tolerant of jitter.
Run:
build.bat buildOutput:
- App folder:
dist\iptvclient - Release assets:
dist\release\
python -m pip install pyinstaller
pyinstaller --clean main.specbuild.bat dry-run- show the next version bump and release notesbuild.bat release- bump version, build, sign, zip, tag, push, and create a GitHub Release
Prerequisites:
ghCLI authenticated (gh auth login)- Code signing certificate installed and
signtool.exeavailable (or setSIGNTOOL_PATH)
- Updates are supported on Windows packaged builds (not source runs).
- Releases include a zip plus a manifest (
AccessibleIPTVClient-update.json) with SHA-256 + signing thumbprint.
- Install/unzip an older build into a test folder.
- Create a new release with
build.bat release. - Launch the older build and use Options -> Check for Updates.
- Accept the update, then confirm the app restarts at the new version and a backup folder remains next to the install folder.