Jef LeCompte b5cec7c951 docs: include so links to wiki, update SLEEP_TIME default
SLEEP_TIME is now 6 hours instead of 3 because of the default TIMESPAN of 6 hours.
2025-07-20 14:05:49 -07:00
2025-07-18 22:55:41 -07:00
2025-07-19 18:03:20 -07:00
2025-07-15 15:53:06 -07:00
2025-07-19 18:03:20 -07:00

zap2xml

Automate TV guides to XMLTV format. Easy to use, up-to-date. See below for getting started.

I also somewhat maintain a version of the original in the historical-perl branch if you're interested in that.

How to use

Retrieving your Lineup ID

Visit the Retrieving Lineup ID in the Wiki.

Node.js

npm i && npm run build && node dist/index.js

See Command line arguments for configuration options.

Docker

Tag Description
latest Stable zap2xml releases
nightly HEAD zap2xml release

docker-compose

services:
  zap2xml:
    container_name: zap2xml
    image: ghcr.io/jef/zap2xml:latest
    environment:
      OUTPUT_FILE: /xmltv/xmltv.xml
    volumes:
      - ./xmltv:/xmltv
    restart: unless-stopped

See Environment variables for configuration options.

Configuration

Environment variables

Variable Description Default
LINEUP_ID Lineup ID; Read more in the Wiki USA-lineupId-DEFAULT (Attenna)
TIMESPAN Timespan in hours (up to 360 = 15 days, default: 6) 6
PREF User Preferences, comma separated list. m for showing music, p for showing pay-per-view, h for showing HD (empty)
COUNTRY Country code (default: USA) USA
POSTAL_CODE Postal code of where shows are available. 30309
USER_AGENT Custom user agent string for HTTP requests. Uses random if not specified
TZ Timezone System default
SLEEP_TIME Sleep time before next run in seconds (default: 21600, Only used with Docker.) 21600
OUTPUT_FILE Output file name (default: xmltv.xml) xmltv.xml

Command line arguments

Argument Description Default
--lineupId Lineup ID; Read more in the Wiki USA-lineupId-DEFAULT (Attenna)
--timespan Timespan in hours (up to 360 = 15 days, default: 6) 6
--pref User Preferences, comma separated list. m for showing music, p for showing pay-per-view, h for showing HD (empty)
--country Country code (default: USA) USA
--postalCode Postal code of where shows are available. 30309
--userAgent Custom user agent string for HTTP requests. Uses random if not specified
--timezone Timezone System default
--outputFile Output file name (default: xmltv.xml) xmltv.xml

Setup and running in intervals

Running natively

You can run zap2xml natively on your system. It is recommended to use a task scheduler to run it in intervals.

Here are some links to get you started on your machine:

If you want to run zap2xml in intervals, you can use a task scheduler like cron on Linux or the Task Scheduler on Windows. Each of the wiki pages above has a section on how to set up zap2xml to run in intervals.

Running in Docker

You can run zap2xml in a Docker container. The SLEEP_TIME environment variable can be used to set the interval between runs. The default is 21600 seconds (6 hours).

Description
zap2xml but make it kubernetes
Readme MIT 181 KiB
Languages
TypeScript 95.7%
Shell 1.7%
JavaScript 1.6%
Dockerfile 1%