{"adoption": {"forks": 74, "observed_at": "2026-08-28T04:04:40.816096+00:00", "stars": 1422}, "canonical_url": "https://ross.abutalabs.com/products/embytolocalplayer", "card": {"archived": false, "artifact_type": "application", "description": "etlp - Emby/Jellyfin 调用外部本地播放器，并回传播放记录。适配 Plex。", "domain": ["media", "self-hosted", "entertainment"], "enriched": true, "function": ["video-processing", "workflow-automation"], "health_score": 98, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["kjtsune/embyToLocalPlayer"], "name": "kjtsune/embyToLocalPlayer", "platform": ["windows", "python", "browser-extension"], "pushed_at": "2026-08-04T10:06:20+00:00", "repo": "kjtsune/embyToLocalPlayer", "stars": 1422, "tags": ["emby", "jellyfin", "plex", "mpv", "potplayer", "vlc", "iina", "playback-progress-sync", "userscript", "local-player", "media", "automation", "macos", "linux"], "topics": ["emby", "iina", "jellyfin", "mpc", "mpv", "potplayer", "vlc", "plex", "bangumi", "etlp"], "urls": [], "use_cases": ["play Emby media in mpv instead of the browser", "play Jellyfin videos with PotPlayer locally", "sync playback progress back to Emby from a local player", "watch Plex content in an external player", "mark episodes watched on trakt or bangumi.tv automatically", "play videos directly from qBittorrent WebUI"], "what_it_is": "A Python tool with a companion browser userscript that lets Emby/Jellyfin (and Plex) web UIs launch external local video players like mpv, PotPlayer, VLC, MPC, and IINA. It reports playback progress back to the media server and can sync watched status to services like Trakt and bangumi.tv.", "when_to_avoid": ["you only watch in the browser and don't need external players", "you need progress sync with an unsupported player", "you can't run a local Python background service"], "when_to_choose": ["you self-host Emby/Jellyfin/Plex and prefer desktop players over browser playback", "you want playback progress and watched status synced back to the server", "you use mpv-family players and want the smoothest integration"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/embytolocalplayer", "repo": "kjtsune/embyToLocalPlayer", "role": "main", "score": 87}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "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:40.816096+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.816096+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:37:42.112813+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5bb245f96342c82628696f52e9a3689862da780a9ad4ecd94ebc6c6bfc36c3ce", "fetched_at": "2026-08-28T04:04:40.816096+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kjtsune/embyToLocalPlayer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 69}, "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": 1496, "days_push": 29, "days_rel": 46, "gap_med": 138.5, "n_releases_24m": 5}, "score": 87, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}