iptv-org / epg
git clone https://github.com/iptv-org/epg.git
π₯ on GitHub Trending today
Utilities for downloading the EPG (Electronic Program Guide) for thousands of TV channels from hundreds of sources.
β
stars, 24h
β
stars, 7 days
+103
stars, 30 days Β· #2,228
3.4k
β
total
544
forks Β· 65 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageHTML
LicenseUnlicense
Created2021-03-13 (5y ago)
Last push4d ago
Watchers88
OwnerOrganization
Seen on GitHub Trending
- 2026-10-20 β #10 monthly in html Β· +103 β
GitHub topics
Links
- GitHub: github.com/iptv-org/epg
- Homepage: https://iptv-org.github.io/
- Releases Β· Issues Β· Hacker News mentions
README excerpt
# EPG Tools for downloading the EPG (Electronic Program Guide) for thousands of TV channels from hundreds of sources. ## Table of contents - β¨ Installation - π Usage - π« Update - π Docker - π Guides - π Database - π¨βπ» API - π Resources - π¬ Discussions - π Contribution - π License ## Installation First, you need to install Node.js on your computer. You will also need to install Git to follow these instructions. After that open the Console (or Terminal>) if you have macOS) and type the following command: [code] This will copy all the code from the repository to your computer into the `epg` folder. After that, we just need to go to the folder we created: [code] And install all the dependencies: [code] ## Usage To start the download of the guide, select one of the supported sites from SITES.md file and paste its name into the command below: [code] Then run it and wait for the guide to finish downloading. When finished, a new `guide.xml` file will appear in the current directory. You can also customize the behavior of the script using this options: [code] ### Downloading from multiple sites at once To do this, simply list the site names separated by commas: [code] To avoid mixing guides from different sites into a single output file, we can also automatically split the output into separate files based on the site name: [code] ### Parallel downloading By default, the guide for each channel is downloaded one by one, but you can change this behavior by increasing the number of simultaneous requests using the `--maxConnections` attribute: [code] But be aware that under heavy load some sites may start return an error or completely block your access. ### Use custom channel list Create an XML file and copy the descriptions of all the channels you need from the /sites into it: [code] And then specify the path to that file via the `--channels` attribute: [code] ### Run on schedule If you want to download guides on a schedule, you can use cron or any other task scheduler. Currently, we use a tool called chronos for this purpose. To start it, you only need to specify the necessary `grab` command and cron expression: [code] For more info go to chronos documentation. ### Access the guide by URL You can make the guide available via URL by running your own server. The easiest way to do this is to run this command: [code] After that, the guide will be available at the link: [code] In addition it will be available to other devices on the same local network at the address: [code] For more info go to serve documentation. ## Update If you have downloaded the repository code according to the instructions above, then to update it will be enough to run the command: [code] And then update all the dependencies: [code] ## Docker ### Pull an image [code] ### Create and run container [code] By default, the guide will be downloaded every day at 00:00 UTC and saved to the `/epg/pu