{"adoption": {"forks": 244, "observed_at": "2026-08-28T04:08:32.013883+00:00", "stars": 4000}, "canonical_url": "https://ross.abutalabs.com/products/open-tv", "card": {"archived": false, "artifact_type": "application", "description": "Ultra-fast, simple and powerful cross-platform IPTV app", "domain": ["media", "cross-platform", "desktop-applications", "entertainment"], "enriched": true, "function": ["video-processing", "gui", "streaming"], "health_score": 89, "homepage": null, "language": "Rust", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["Fredolx/open-tv"], "name": "Fredolx/open-tv", "platform": ["windows", "cross-platform", "rust"], "pushed_at": "2026-06-14T16:22:05+00:00", "repo": "Fredolx/open-tv", "stars": 4000, "tags": ["iptv", "m3u", "xtream", "mpv", "tv-streaming", "media-player", "linux", "macos", "android", "ios"], "topics": [], "urls": [], "use_cases": ["watch IPTV channels from an M3U playlist", "import channels from Xtream codes", "record live TV while watching", "manage multiple IPTV sources in one app", "control TV playback with a remote", "share custom channels with friends", "restream channels to phone or TV"], "what_it_is": "Fred TV (formerly Open TV) is a cross-platform IPTV desktop/mobile application written in Rust for watching IPTV channels from M3U files, M3U links, or Xtream sources. It features instant search, recording while watching, favorites, custom channels, and TV remote control support with very low RAM usage.", "when_to_avoid": ["you need DRM-protected or official streaming service content rather than IPTV playlists", "you cannot install mpv, ffmpeg, and yt-dlp dependencies on your system", "you need a web-based or server-side IPTV solution"], "when_to_choose": ["you want a fast, lightweight open-source IPTV player across Windows, Linux, macOS, Android, or iOS", "you need to combine multiple M3U/Xtream sources with instant search and favorites", "you want recording and restreaming built into your IPTV app"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/open-tv", "repo": "Fredolx/open-tv", "role": "main", "score": 82}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "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:08:32.013883+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.013883+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:24:08.526458+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2922ed788b6d086bf7e7c0cca10d576b24960b3a49ba828f6b79e8ad37201858", "fetched_at": "2026-08-28T04:08:32.013883+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Fredolx/open-tv"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 87, "longevity": 100, "rhythm": 66}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1634, "days_push": 80, "days_rel": 226, "gap_med": 7.0, "n_releases_24m": 21}, "score": 82, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}