{"adoption": {"forks": 380, "observed_at": "2026-08-28T04:04:10.583544+00:00", "stars": 1264}, "canonical_url": "https://ross.abutalabs.com/products/webhtv", "card": {"archived": false, "artifact_type": "application", "description": "WebHomeTV 基于FongMi二次开发，增强了 WebHome 自定义首页、App Native SDK、网盘链接检测 和 Nostr推荐首页。  这个项目的核心目标是让 CSP 站点首页可以变成一个真正可开发的网页应用：开发者可以用 HTML/CSS/JavaScript 定制首页，再通过 App 暴露的 Native 能力完成搜索、播放、跨域请求、资源代理、最近观看、网盘检测和状态同步。", "domain": ["media", "android-tools", "web-development", "developer-tools", "self-hosted"], "enriched": true, "function": ["http-server", "web-scraping", "video-processing", "plugin-system", "developer-tools", "sdk", "search-engine", "webhook", "proxy"], "health_score": 100, "homepage": "https://t.me/webhtv", "language": "Java", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["fish2018/webhtv"], "name": "fish2018/webhtv", "platform": ["self-hosted"], "pushed_at": "2026-08-26T13:02:28+00:00", "repo": "fish2018/webhtv", "stars": 1264, "tags": ["android-tv", "iptv", "video-streaming", "custom-homepage", "webview-app", "spider-plugins", "cloud-drive-link-check", "nostr", "tmdb", "remote-management", "config-sync", "fork", "fongmi", "catvod", "automation", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["build a custom HTML/JS homepage for an Android TV video app", "check whether cloud drive share links are still valid", "sync watch history and config between Android TV boxes", "manage an Android media box remotely over LAN or a relay server", "inject userscripts into web pages inside a TV app", "rank video sources by search and playback success rate", "proxy cross-origin requests for site sources on Android", "get Nostr or TMDB based recommendations on a TV homepage"], "what_it_is": "WebHomeTV is an Android video streaming app (mobile and TV) forked from the FongMi/CatVod ecosystem, adding a customizable web-based homepage (WebHome) that developers build with HTML/CSS/JavaScript and drive through a native SDK for search, playback, cross-origin requests, and resource proxying. It also adds cloud-drive link validity checking, site health ranking, LAN/remote device management, login-state learning and sync, playback history sync via webhooks, and Nostr/TMDB recommendation homepages.", "when_to_avoid": ["you need a simple polished streaming app without configuration or scripting", "you target iOS, desktop, or web platforms", "you want a fully legal turnkey content service - sources and spiders are user-supplied"], "when_to_choose": ["you want a hackable Android TV/mobile video app with scriptable web homepages and a native JS SDK", "you already use the FongMi/CatVod ecosystem and need cloud-drive detection, health ranking, or device sync", "you need LAN or remote management of multiple Android media devices"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/webhtv", "repo": "fish2018/webhtv", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "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:04:10.583544+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:10.583544+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:04:02.639401+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e85c531a327e36f0edf1fb00a56d9d5e040cbb450261a854d1a12c9adfa2ec30", "fetched_at": "2026-08-28T04:04:10.583544+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fish2018/webhtv"}, {"content_hash": "717b2828715cc9bee7d0b07a4baff3b1fd7f43d248f6ab3b7118e543fd74a43e", "fetched_at": "2026-08-29T12:15:59.216453+00:00", "kind": "homepage", "missing": false, "url": "https://t.me/webhtv"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 7, "rhythm": 98}, "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": 103, "days_push": 7, "days_rel": 13, "gap_med": 1, "n_releases_24m": 38}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}