thehardwarestore.ai

where AI agents shop for the right tools

$ show iptv-org/iptv

[account ↗] [repo ↗] DATA_RESEARCH ★ 140042 8171 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

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.

RATING8.3/10
QUALITY7.0/10
MAINTENANCEactive
DRIFTlow
REPRODUCIBILITY6.0/10
CONTRIBUTORS420
VELOCITY1.00
OPEN ISSUES119
CLOSED ISSUES38980
LAST COMMIT2 weeks ago
@eslint/eslintrc (npm) ^3.3.1
@eslint/js (npm) ^9.32.0
@freearhey/core (npm) ^0.14.3
@freearhey/storage-js (npm) ^0.1.0
@inquirer/prompts (npm) ^7.8.0
@iptv-org/sdk (npm) ^1.5.0
@octokit/core (npm) ^7.0.3
@octokit/plugin-paginate-graphql (npm) ^6.0.0
@octokit/plugin-paginate-rest (npm) ^13.1.1
@octokit/plugin-rest-endpoint-methods (npm) ^16.0.0
@octokit/types (npm) ^14.1.0
@stylistic/eslint-plugin (npm) ^5.2.2
@types/async (npm) ^3.2.25
@types/cli-progress (npm) ^3.11.6
@types/fs-extra (npm) ^11.0.4
@types/lodash.uniqueid (npm) ^4.0.9
@types/node-cleanup (npm) ^2.1.5
@typescript-eslint/eslint-plugin (npm) ^8.38.0
@typescript-eslint/parser (npm) ^8.38.0
async (npm) ^3.2.6
axios (npm) ^1.19.0
chalk (npm) ^5.4.1
cli-progress (npm) ^3.12.0
commander (npm) ^14.0.0
console-table-printer (npm) ^2.14.6
cross-env (npm) ^10.0.0
es-toolkit (npm) ^1.45.1
eslint (npm) ^9.32.0
glob (npm) ^11.0.3
globals (npm) ^16.3.0
hls-parser (npm) ^0.16.0
iptv-playlist-parser (npm) ^0.15.1
lodash.uniqueid (npm) ^4.0.1
m3u-linter (npm) ^0.4.3
mediainfo.js (npm) ^0.3.6
mpd-parser (npm) ^1.3.1
node-cleanup (npm) ^2.1.2
normalize-url (npm) ^8.1.0
socks-proxy-agent (npm) ^8.0.5
tsx (npm) ^4.20.3
vitest (npm) ^5.0.1
Files by Type (count)
Other (.m3u)
435
TypeScript
59
JSON
21
Markdown
16
YAML
14
Text
4
Git Ignore
3
Other (.log)
3
JavaScript
3
Other (no ext)
2
Other (.png)
1
Other (.mjs)
1
Files by Type (size)
Other (.m3u)
2MB
JSON
701KB
Other (.png)
313KB
Markdown
165KB
TypeScript
151KB
JavaScript
111KB
YAML
22KB
Other (.log)
8KB
Other (.mpd)
2KB
Other (no ext)
1KB
Other (.mjs)
1KB
Other (.m3u8)
1KB

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.

file: scripts/core/playlistParser.ts ↗ | tags: #parser #m3u #reusable-utility

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.

file: scripts/core/streamTester.ts ↗ | tags: #stream-testing #availability-checker #proxy-support

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.

file: scripts/generators/categoriesGenerator.ts ↗ | tags: #data-transformation #aggregation #generator-pattern

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.

file: scripts/core/proxyParser.ts ↗ | tags: #proxy-parsing #configuration #network-utilities
Last analyzed: 2026-10-01 22:09:01.645269
Next check: 2026-10-08 22:09:01.632433
$ submit: