{"adoption": {"forks": 244, "observed_at": "2026-08-28T04:05:12.340483+00:00", "stars": 1621}, "canonical_url": "https://ross.abutalabs.com/products/douyinbarragegrab", "card": {"archived": false, "artifact_type": "application", "description": "基于系统代理的抖音弹幕wss抓取程序，能够获取所有数据来源，包括chrome，抖音直播伴侣等，可进行进程过滤", "domain": ["social-media", "windows"], "enriched": true, "function": ["websocket", "proxy", "monitoring", "streaming", "chatbot"], "health_score": 84, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["ape-byte/DouyinBarrageGrab"], "name": "ape-byte/DouyinBarrageGrab", "platform": ["windows", "dotnet"], "pushed_at": "2026-04-11T14:44:48+00:00", "repo": "ape-byte/DouyinBarrageGrab", "stars": 1621, "tags": ["douyin", "barrage", "danmaku", "live-stream-capture", "packet-capture", "websocket-server", "tiktok-china", "stream-interaction", "live-streaming", "automation", "real-time", "desktop"], "topics": [], "urls": [], "use_cases": ["capture douyin live stream danmaku comments in real time", "build a barrage interaction game for my livestream", "feed live stream gift and like events into a voice announcement bot", "collect douyin live room statistics for data analysis", "grab danmaku from douyin live companion without a system proxy", "filter barrage capture to specific browser processes", "integrate douyin live events into my own app via websocket"], "what_it_is": "A Windows desktop application that captures Douyin (TikTok China) live-stream barrage (danmaku) data by intercepting WebSocket traffic through a system proxy, supporting sources like browsers, the Douyin client, and Douyin Live Companion with process filtering. It pushes captured events (comments, likes, gifts, follows, room stats, fan club messages) to downstream apps via a built-in WebSocket server.", "when_to_avoid": ["you need to capture from platforms other than Douyin", "you are on Linux or macOS since it is a Windows .NET application", "you want an officially supported API rather than proxy-based traffic interception"], "when_to_choose": ["you need real-time Douyin live-stream events (danmaku, gifts, likes, follows) on Windows", "you want to capture data from multiple sources including browsers and Douyin Live Companion", "you need a WebSocket feed to integrate live events into custom applications or games"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/douyinbarragegrab", "repo": "ape-byte/DouyinBarrageGrab", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "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:05:12.340483+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:12.340483+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:49:13.391833+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4a02cd7d4b2451fe360a4958396e22235701cabbcaa4d099645066e22e2f390c", "fetched_at": "2026-08-28T04:05:12.340483+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ape-byte/DouyinBarrageGrab"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 76, "longevity": 100, "rhythm": 46}, "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": 1421, "days_push": 144, "days_rel": 146, "gap_med": 211.0, "n_releases_24m": 3}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}