The zap2xml Perl script is a command-line utility that extracts electronic program guide (EPG) data for over-the-air (OTA) or cable television from any one of several service providers, parses it, collates it, and saves it in a format compatible with various media center applications. For example, you can use zap2xml to download guide data from zap2it.com in XMLTV format for free for Jellyfin, instead of paying $35/yr. for Schedules Direct.
This repo is a fork of shuaiscott/zap2xml. Their last commit was pushed April 2021 and the maintainer will not be able to access their GitHub account until 2025. The purpose of this fork is to:
- Rebuild the container to pull in security updates since April 2021.
- Add CICD with scheduled builds to continue to pull in security updates as they come.
- Publish the container somewhere more reliable that Docker Hub.
- Consolidate community bug fixes and improvements.
- Reduce complexity.
If you are browsing forks of shuaiscott/zap2xml wondering which fork you should use and contribute to, if any, please consider this one.
You will need the docker engine installed to use this project.
Pull (download) this container from the GitHub container registry.
docker pull ghcr.io/kj4ezj/zap2xml
This container is also available on Docker Hub.
docker pull docker.io/kj4ezj/zap2xml
Download guide data to a file called tv-guide.xml in the current folder.
docker run -v "$(pwd):/data" kj4ezj/zap2xml /bin/sh -c "/zap2xml.pl -u '$ZAP2IT_USERNAME' -p '$ZAP2IT_PASSWORD' -U -o /data/tv-guide.xml"
The upstream repo provided a script that wraps zap2xml and runs it every 12 hours. You can run it in the foreground...
docker run -v "$(pwd):/data" -e "USERNAME=$ZAP2IT_USERNAME" -e "PASSWORD=$ZAP2IT_PASSWORD" -e XMLTV_FILENAME=tv-guide.xml kj4ezj/zap2xml
...or the background.
docker run -d -v "$(pwd):/data" -e "USERNAME=$ZAP2IT_USERNAME" -e "PASSWORD=$ZAP2IT_PASSWORD" -e XMLTV_FILENAME=tv-guide.xml kj4ezj/zap2xml
The wrapper loops forever, so you will need to manually kill the container. This command kills the last container you started.
docker kill "$(docker ps | tail -1 | awk '{print $1}')"
For this reason and others, the wrapper will be removed in a subsequent version. If you plan to rely upon it, please pull your container by git tag.
This list is not exhaustive, there may be other compatible consumers and providers.
Legal Notice
This repo contains assets created in collaboration with a large language model, machine learning algorithm, or weak artificial intelligence (AI). This notice is required in some countries.
Content type
Image
Digest
sha256:0cf9b63ec…
Size
21.4 MB
Last updated
over 2 years ago
docker pull kj4ezj/zap2xml