{"adoption": {"forks": 884, "observed_at": "2026-08-28T04:09:51.314474+00:00", "stars": 6914}, "canonical_url": "https://ross.abutalabs.com/products/iptvnator", "card": {"archived": false, "artifact_type": "application", "description": ":tv: Cross-platform IPTV player application with multiple features, such as support of m3u and m3u8 playlists, favorites, TV guide, TV archive/catchup and more.", "domain": ["media", "cross-platform", "desktop-applications", "entertainment"], "enriched": true, "function": ["gui", "video-processing", "self-hosted"], "health_score": 100, "homepage": "https://4gray.github.io/iptvnator/", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["4gray/iptvnator"], "name": "4gray/iptvnator", "platform": ["windows", "browser", "cross-platform"], "pushed_at": "2026-08-24T22:29:13+00:00", "repo": "4gray/iptvnator", "stars": 6914, "tags": ["iptv", "m3u-playlist", "epg", "xtream-codes", "pwa", "video-player", "streaming", "macos", "linux", "electron"], "topics": ["iptv", "pwa", "chromeos", "tv", "m3u", "m3u8", "iptv-player", "electron", "linux", "player", "snap", "macos", "player-video", "video", "iptv-player-application", "iptv-m3u", "playlist", "epg", "fair-source", "xtream-codes"], "urls": [], "use_cases": ["play m3u and m3u8 IPTV playlists on my desktop", "watch IPTV channels with an electronic program guide", "connect to an Xtream Codes provider for live TV and VOD", "import playlists from a URL or local file and manage favorites", "open streams in VLC or MPV from an IPTV app", "self-host a browser-based IPTV player as a PWA", "catch up on TV archive streams"], "what_it_is": "IPTVnator is a cross-platform, open-source IPTV player application built with Electron and Angular that plays m3u/m3u8 playlists, Xtream Codes, and Stalker portal streams. It supports XMLTV-based EPG, favorites, catchup/TV archive, external players, and is also available as a PWA.", "when_to_avoid": ["you expect the app to provide channels or playlists - it only plays content you supply", "you need DRM-protected or paid streaming service playback", "you want a mobile-native app rather than desktop or PWA"], "when_to_choose": ["you need a free, privacy-first IPTV player on macOS, Windows, or Linux", "you want EPG, favorites, catchup, and multi-playlist management in one app", "you prefer a PWA or self-hosted web player without installing a desktop app"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/iptvnator", "repo": "4gray/iptvnator", "role": "main", "score": 93}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:51.314474+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:41:27.740940+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "89a2113cff0498708311a1798ceeda64eeacd1c5cb1d24125ba790e43d069566", "fetched_at": "2026-08-28T04:09:51.314474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/4gray/iptvnator"}, {"content_hash": "63733260df81ee88495901cefc1d17dc5888cc67642dd7827af12b9ceafc019d", "fetched_at": "2026-08-29T08:37:36.476248+00:00", "kind": "homepage", "missing": false, "url": "https://4gray.github.io/iptvnator/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 80}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2523, "days_push": 9, "days_rel": 59, "gap_med": 35, "n_releases_24m": 8}, "score": 93, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}