2d70e77bed0f76b3ce96982e0bee7553bbee992d
Some checks failed
Build and Publish TVJ EPG Image / build (push) Failing after 16s
TVJ IPTV + XMLTV Container
This project provides a self-contained IPTV helper container that:
- Serves a TVJ M3U playlist (stream data)
- Automatically fetches and updates XMLTV EPG data for Television Jamaica (TVJ)
- Hosts both files over HTTP for easy consumption by IPTV clients
The container is designed to run unattended and continuously refresh the EPG on a schedule.
What this container provides
When deployed, the container exposes the following URLs:
-
Playlist (M3U):
http://localhost:8787/tvj.m3u -
EPG (XMLTV):
http://localhost:8787/tvj.xml
These can be used directly in:
- Plex
- Jellyfin
- Kodi
- Tivimate
- TVHeadend
- Any XMLTV / M3U compatible IPTV client
The playlist and EPG are matched using:
tvg-id="TVJ.jm@SD"
Run the container
podman run -d \
--name tvj-epg \
-p 8787:8787 \
-e TZ=America/Jamaica \
-e UPDATE_INTERVAL=3 \
ghcr.io/lyncolnmd/tvj-epg:latest
Environment variables
| Variable | Description |
|---|---|
TZ |
Timezone used for logging only (XMLTV remains UTC) |
UPDATE_INTERVAL |
How often the EPG is refreshed (hours) |
IPTV client configuration
Playlist URL
http://localhost:8787/tvj.m3u
EPG URL
http://localhost:8787/tvj.xml
Most clients will automatically match the guide using the tvg-id.
Logging and updates
Container logs show:
- When the script last ran
- When the XML file was written
- How far into the future the EPG data extends
Example:
[2026-02-01 10:46:11 EST] Script run started (TZ=America/Jamaica)
[2026-02-01 10:46:11 EST] XMLTV written: /app/output/tvj.xml
Summary: Last run=2026-02-01 10:46:11 EST, EPG updated until=2026-02-02 10:34:04 EST
Updating the container
The container image is built automatically via GitHub Actions.
Description
Languages
Python
91.9%
Shell
4.5%
Dockerfile
3.6%