Skip to main content

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

  1. Install package:

    $ pip3 install py_epg
    
  2. 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.
  3. 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.

  1. Install poetry:

    curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
    
  2. Clone repository & install dependencies:

    git clone https://github.com/szab100/py-epg.git && cd py-epg
    
  3. 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).
  4. 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.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-epg 0.6.0
File Size Uploaded
py_epg-0.6.0.tar.gz 38.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-epg 0.6.0
File Interpreter ABI Platform
py_epg-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 87.3 kB

Release files / py_epg-0.6.0.tar.gz

Download URL py_epg-0.6.0.tar.gz
Size 38.6 kB
Tags Source
SHA-256 checksum
How to use checksums
14a84bb69ef62b3de9517579daefa9fe2b7833ed33181e70339d3377f376edd9
BLAKE2b-256 checksum
How to use checksums
2bfbd6bc4fd5200831ed5f718db3a37c231f6eb19ee4dcd0586d1ba2043499e5
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.6.0-py3-none-any.whl

Download URL py_epg-0.6.0-py3-none-any.whl
Size 48.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c8728f0490536db3f03627c9c7da6b7be5876a20e1ae7f797f0a2917c8adc30
BLAKE2b-256 checksum
How to use checksums
76f282fa1fabcbc9ccc1d2134db878c76b97d94de54af0bedf2485b3c2e51130
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 history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page