{"adoption": {"forks": 95, "observed_at": "2026-08-28T04:03:43.904472+00:00", "stars": 1137}, "canonical_url": "https://ross.abutalabs.com/products/vstv", "card": {"archived": false, "artifact_type": "application", "description": "VsTV 让你在 智能电视、电视盒子、平板或手机 上收看直播频道，支持国产及常见品牌电视 / 盒子（如 TCL、海信、酷开、华为智慧屏、荣耀、小米电视等）", "domain": ["media", "entertainment", "android-tools", "cross-platform"], "enriched": true, "function": ["video-processing", "streaming", "gui", "configuration-management"], "health_score": 98, "homepage": null, "language": null, "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["vesaaa/vstv"], "name": "vesaaa/vstv", "platform": [], "pushed_at": "2026-08-11T10:30:45+00:00", "repo": "vesaaa/vstv", "stars": 1137, "tags": ["iptv", "live-tv", "m3u", "epg", "multicast", "tv-box", "android-tv", "catchup", "channel-list", "remote-control", "android", "mobile", "desktop"], "topics": [], "urls": [], "use_cases": ["watch live TV channels on an Android TV box or smart TV", "play IPTV multicast udp/rtp streams without a proxy", "merge multiple M3U subscription sources into one channel list", "set up a simple channel mode for elderly family members", "rewatch programs from the past week with catchup", "configure a TV app remotely via a web page"], "what_it_is": "VsTV is a lightweight (under 5MB) Android live TV application for smart TVs, TV boxes, tablets, and phones, supporting M3U/TXT subscription playlists, EPG guides, UDP/RTP multicast IPTV streams, multi-source merging, and up to 7-day catchup playback. It provides no content itself and is optimized for remote controls and low-end hardware.", "when_to_avoid": ["you expect built-in channels or content - none are provided", "you need iOS or non-Android devices", "you want a player without manual source configuration"], "when_to_choose": ["you have your own legally licensed M3U or multicast IPTV sources", "you run a low-end Android box and need a fast, tiny player", "you need native UDP/RTP multicast support without udpproxy", "you want EPG, catchup, and multi-line channel switching in one app"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/vstv", "repo": "vesaaa/vstv", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "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:03:43.904472+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.904472+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:36:22.162627+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac56d0f24c079ee787fc423a46adc08129580c186eff2aaad65240d5fe4ac169", "fetched_at": "2026-08-28T04:03:43.904472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vesaaa/vstv"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 11, "rhythm": 97}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 156, "days_push": 22, "days_rel": 22, "gap_med": 0, "n_releases_24m": 8}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}