mirror of
https://github.com/serrebi/Accessible-IPTV-Client.git
synced 2026-03-18 00:06:51 -07:00
An accessible IPTV client I VibeCoded using Wx Python
- Python 98.3%
- PowerShell 1.4%
- Batchfile 0.2%
| test_zombie_env | ||
| tests | ||
| tools | ||
| .gitignore | ||
| agents.md | ||
| app_meta.py | ||
| build.bat | ||
| build_exe.bat | ||
| casting.py | ||
| check_playlist_format.py | ||
| check_playlist_variants.py | ||
| debug_ffmpeg_remux.py | ||
| external_player.py | ||
| ffmpeg.exe | ||
| http_headers.py | ||
| init.mp4 | ||
| internal_player.py | ||
| LICENSE | ||
| main.py | ||
| main.spec | ||
| options.py | ||
| playlist.py | ||
| providers.py | ||
| README.md | ||
| repro_skymix_matching.py | ||
| repro_zombie_update.py | ||
| requirements.txt | ||
| sitecustomize.py | ||
| stream_proxy.py | ||
| test_cast_universal.py | ||
| test_epg.db | ||
| TRIAGE.md | ||
| update_helper.bat | ||
| update_helper.ps1 | ||
| update_helper_launcher.vbs | ||
| updater.py | ||
Accessible IPTV Client
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.
Features
- 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
Quick Start (Recommended)
- 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.
Requirements (Run From Source)
- 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)
Install + Run (Windows or Linux)
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python main.py
Keyboard Shortcuts
Main Window
- 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)
Built-in Player
- 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
EPG Notes
- 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.
Built-in Player Buffering
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.
Build a Standalone App
Windows
Run:
build.bat build
Output:
- App folder:
dist\iptvclient - Release assets:
dist\release\
Linux (or manual Windows build)
python -m pip install pyinstaller
pyinstaller --clean main.spec
Release + Auto-Update (Windows)
Release pipeline
build.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)
Auto-update behavior
- 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.
Manual Updater Test (Recommended)
- 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.