{"adoption": {"forks": 418, "observed_at": "2026-08-28T04:06:41.573180+00:00", "stars": 2366}, "canonical_url": "https://ross.abutalabs.com/products/destreamer", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Save Microsoft Stream videos for offline enjoyment.", "domain": ["media", "developer-tools"], "enriched": true, "function": ["video-processing", "cli"], "health_score": 20, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["snobu/destreamer"], "name": "snobu/destreamer", "platform": ["cli", "windows", "cross-platform"], "pushed_at": "2024-06-11T11:36:39+00:00", "repo": "snobu/destreamer", "stars": 2366, "tags": ["video-downloader", "microsoft-stream", "hls", "ffmpeg", "offline-viewing", "typescript", "video", "nodejs", "macos", "linux"], "topics": ["offline", "microsoft-stream", "download"], "urls": [], "use_cases": ["download microsoft stream videos", "save stream videos for offline viewing", "download lecture recordings from microsoft stream", "save teams meeting recordings locally", "bulk download videos from ms stream", "capture hls video stream to file"], "what_it_is": "A Node.js/TypeScript command-line tool that saves Microsoft Stream videos to disk for offline viewing by capturing the HLS stream through ffmpeg, with support for access-token refresh and closed captions. The project is explicitly abandoned and is unlikely to work against current Microsoft Stream tenants.", "when_to_avoid": ["The project is officially abandoned and will probably fail against current Microsoft Stream tenants", "You need something actively maintained - consider the suggested alternative Sharedown for SharePoint-backed video downloads", "Downloading may conflict with your organization's Office 365 policies or Microsoft's terms of service"], "when_to_choose": ["You need to archive Microsoft Stream videos from a tenant where it still works", "You want a scriptable CLI downloader with ffmpeg-based saving and closed-caption support", "You need a cross-platform (Windows/macOS/Linux) Node.js tool for offline video capture", "You want to fork or study the codebase, or use one of the university-specific forks"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/destreamer", "repo": "snobu/destreamer", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "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:06:41.573180+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.573180+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:35:58.722303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d41c4196f4bb6537b71f72403c59eca75a530f9045cda6ba5eb90d256bad6754", "fetched_at": "2026-08-28T04:06:41.573180+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snobu/destreamer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2731, "days_push": 813, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}