$ show iptv-org/iptv
This repository is a large-scale, community-curated collection of free IPTV (Internet Protocol Television) live stream URLs, organized as standardized M3U playlist files by country and platform (e.g., Pluto TV, Samsung TV Plus, local broadcasters). The project functions as a data pipeline: raw stream URLs are contributed via GitHub issues, validated, formatted, and aggregated into categorized playlists (by country, language, category, region, and source) which are deployed to GitHub Pages and a JSON API. Supporting TypeScript scripts handle playlist parsing, stream testing, metadata enrichment from an external database (iptv-org/database), and automated updates via GitHub Actions. While the primary deliverable is the curated dataset, the repository includes a well-structured automation framework that could be adapted for similar data aggregation tasks. The codebase is actively maintained with daily workflows, though the underlying stream URLs are inherently unstable and subject to geo-blocking or link rot.
The LLM identified 4 files worth highlighting for reuse:
A robust M3U playlist parser that handles extended tags (#EXTINF with tvg-id, quality, labels) and custom VLC options (#EXTVLCOPT). It is isolated, imports only standard Node modules and internal types, and can be extracted and reused in any project that needs to parse IPTV playlists. Demonstrates careful handling of edge cases like missing metadata and various line endings.
An asynchronous stream availability tester using axios and mediainfo.js, with configurable timeouts, proxy support (HTTP/SOCKS via SocksProxyAgent), and parallel execution via async.eachLimit. It is self-contained and parameterized, making it reusable for any project that needs to validate live stream URLs. The code handles error states gracefully and logs results in a structured format.
One of several generators (CategoriesGenerator) that implements a common Generator interface with a generate() method. It reads a list of streams, groups them by category, and outputs M3U files per category. The pattern is cleanly separated and could be reused to generate index files for any dimension (country, language, etc.). The code is free of business-specific hardcoding and relies on a generic data model.
A utility that parses proxy configuration strings (e.g., 'socks5://user:pass@host:port') into usable agent objects for HTTP requests. It handles multiple proxy protocols and authentication, and is fully decoupled from the rest of the codebase. This is a classic cross-cutting concern that could be extracted and used in any project needing proxy-aware HTTP clients.