py-epg
py-epg is an easy to use, modular, multi-process EPG grabber written in Python.
- 📺 Scrapes various TV Program websites and saves programs in XMLTV format.
- 🧩 Simply extend EpgScraper to grab EPG from your favorite TV site (requires basic Python skills).
- 🤖 The framework provides the rest:
- Beautiful Soup - easily search & extract data from html elements
- multi-processing
- config management
- logging
- build & write XMLTV (with auto-generated fields, eg 'stop')
- single proxy or rotating proxy pool support (with remote proxy-list fetching, per-request rotation, timeouts, retries and a circuit breaker that auto-disables failing proxies)
- persistent caching (SQLite) of slow-changing data (channel logos, program details) with configurable TTLs
- auto http/s retries
- random fake user_agents
- 🚀 Save time by fetching channels in parallel (caution: use proxy server(s) to avoid getting blacklisted)!
- 🧑🏻💻 Your contributions are welcome! Feel free to create a PR with your tv-site scraper and/or framework improvements.
Usage
-
Install package:
$ pip3 install py_epg
-
Create configuration: py_epg.xml
- Add all your channels (see sample config).
- Make sure there is a corresponding site scraper implementation in py_epg/scrapers for each channels ('site' attribute).
- Optionally configure a
<cache>(persistent caching with TTLs) and a<proxy-list>(rotating proxy pool with circuit breaker) - see the comments in the sample config for all supported attributes.
-
Run:
$ python3 -m py_epg -c </path/to/your/py_epg.xml> -p
..or see all supported flags:
$ python3 -m py_epg -h usage: py_epg [-h] [-p [PROGRESS_BAR]] [-q [QUIET]] -c CONFIG ...
Development
Your contributions are welcome! Setup your dev environment as described below. VSCode is a great free IDE for python projects. Once you are ready with your cool tv site scraper or framework feature, feel free to open a Pull Request here.
-
Install poetry:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
-
Clone repository & install dependencies:
git clone https://github.com/szab100/py-epg.git && cd py-epg
-
Configure py_epg.xml
- Add all your channels (see the sample config xml). Make sure you have a scraper implementation in py_epg/scrapers/ for each channels ('site' attribute).
-
Run:
poetry install poetry run epg -c py_epg.xml
License
Copyright 2021. Released under the MIT license.
Metadata
Release files for py-epg 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py_epg-0.4.2.tar.gz | 18.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_epg-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.9 kB
Release files / py_epg-0.4.2.tar.gz
| Download URL | py_epg-0.4.2.tar.gz |
|---|---|
| Size | 18.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
833fe38b32162be8e31ad6a2648f2c05989e2b2e52cb9be04061b1daafcdf278
|
|
BLAKE2b-256 checksum How to use checksums |
4912667f97d9d3ff7c5a9e9051dd2f6c112e462722bff2a77534f3dee938e5bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.14.2 Darwin/25.6.0
|
Release files / py_epg-0.4.2-py3-none-any.whl
| Download URL | py_epg-0.4.2-py3-none-any.whl |
|---|---|
| Size | 24.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c8ff7b34fc7ae64f324437255ba04e57d381d815d19af22e090b27a70d99cab
|
|
BLAKE2b-256 checksum How to use checksums |
9b2cb76e5ccd397ff7dfd33dc730bd56683fa1b4299f393a94c3ab0fd04d00f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.14.2 Darwin/25.6.0
|