Copy this link for IPTV
https://raw.githubusercontent.com/BidyutRoy2/IPTV/refs/heads/main/combined.m3uIPTV Playlist & EPG Manager
This project is a lightweight yet powerful IPTV playlist and EPG manager, designed as a personal coding project to maintain a reliable IPTV setup for personal use. All included links are collected from publicly available sources and other GitHub repositories.
I do not host or distribute any copyrighted content. This project is purely intended for educational and personal use, helping users organize and manage IPTV playlists and EPG data efficiently. All resources provided are sourced from publicly accessible platforms, ensuring compliance with copyright regulations.
⚡ Key Features
- 📺 Seamless IPTV playlist management
- 🗓 Integrated EPG for a richer viewing experience
- 🖥 Intuitive interface for personal IPTV setups
- 🌐 Fully sourced from publicly available platforms, ensuring legal compliance
Note: This project is intended strictly for personal and educational use. All content is collected from public sources.
- 📺 YouTube Playlist Support – Capture live YouTube channels automatically in
YT_playlist.m3u. - 🎛 Playlist Aggregation – Merge multiple playlists into one organized list in
combined.m3u. - 🔗 Link Status Checker – Automatically update link status for
static_channels.jsonandstatic_movies.json. - 🗓 EPG Scraper – Generate or refresh
epg.xmlfor accurate TV guide support. - ⚙️ Fully Automated – CI/CD workflows regenerate playlists and EPG guides without manual effort.
- 💡 Easy to Use – Minimal setup required, designed for personal IPTV setups.
IPTV/
├── .github/workflows/ # CI/CD pipelines for automation
├── YT_channels.py # YouTube channels list
├── YT_get_YouTube_link.py # Get m3u8 links from YouTube
├── combine_playlists.py # Combines YouTube and static channels playlist into one
├── epg_scraper.py # Scrapes and generates EPG (XML format)
├── static_channels_update.py # Updates static channels status automatically
├── static_channels.json # Predefined static channels (outpot)
├── YT_playlist.m3u # Playlist generated from Youtube (output)
├── combined.m3u # Final generated playlist (output)
└── epg.xml # Final generated TV guide (output)
---
config:
layout: dagre
---
flowchart TD
A2["YT_get_YouTube_link.py"] -- <br> --> A3["YT_playlist.m3u"]
A3 --> A5["combine_playlists.py"]
A4["static_channels.json"] -- </br> --> A5
A5 --> A6["combined.m3u"]
B1["epg_scraper.py"] -- Scrap Sites for EPG --> B2["epg.xml"]
C1["static_channels_update.py"] -- checks/updates --> A4
n1["YT_channels.py<br>"] -- <br> --> A3
n1@{ shape: rect}
- Clone the repository:
git clone https://github.com/BidyutRoy2/IPTV.git
cd IPTV- Install Python dependencies:
python -m pip install --upgrade pip
pip install requests beautifulsoup4 lxml playwright pytz yt_dlp
playwright install chromium- Install FFmpeg (required for stream processing):
# Download and extract FFmpeg
wget -q https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-linux64-gpl.tar.xz -O ffmpeg.tar.xz
tar -xf ffmpeg.tar.xz
FFMPEG_DIR=$(ls -d ffmpeg-master-*)
# Copy binaries to system path (requires sudo)
sudo cp "$FFMPEG_DIR/bin/ffmpeg" /usr/local/bin/
sudo cp "$FFMPEG_DIR/bin/ffprobe" /usr/local/bin/
ffmpeg -versionIf you don’t have
sudoaccess, extract FFmpeg to a local folder and add it to your PATH:
export PATH="$PWD/$FFMPEG_DIR/bin:$PATH"- Download a static build from FFmpeg Builds.
- Extract to a folder (e.g.,
C:\ffmpeg). - Add the
binfolder to your system PATH or PyCharm terminal PATH. - Verify installation:
ffmpeg -versionFFmpeg will now work in terminals and Python scripts (
subprocessorffmpeg-python).
- Find outputs:
combined.m3u→ your IPTV playlistepg.xml→ your TV guide
Sample combined.m3u:
#EXTM3U
#EXTINF:-1 tvg-id="BBCWORLD" group-title="News",BBC World News
http://example.com/stream/bbcworld- Add new channels by editing
static_channels.json. - Add new movies by editing
static_movies.json. - Add new YouTube channels by editing
YT_channels.py. - Modify YouTube extraction rules in
YT_get_YouTube_link.py. - Modify playlist combination rules in
combine_playlists.py. - Modify movies onnline/offline status logic in
static_movies_update.py. - Modify channels onnline/offline status logic in
static_channels_update.py. - Extend EPG scraping logic in
epg_scraper.pyfor custom sources.
Contributions are welcome! Fork the repo, make your changes, and submit a PR.
MIT License – free to use, modify, and share.
This project is maintained as a hobby and for family use. It's a fun way to keep learning Python while keeping IPTV streams organized for daily use.