David Folkes 231f1a676a
Some checks failed
Build and Publish TVJ EPG Image / build (push) Failing after 0s
Update .gitea/workflows/build.yml
2026-02-02 10:35:16 -05:00
2026-02-01 12:35:25 -05:00

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
No description provided
Readme 110 KiB
Languages
Python 91.9%
Shell 4.5%
Dockerfile 3.6%